> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hedera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get schedule info

`ScheduleInfoQuery` is a consensus node query that returns information about the current state of a schedule transaction on a Hedera network.

**Schedule Info Response**

| Field                          | Description                                                                                                                         |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Schedule ID**                | The ID of the schedule transaction.                                                                                                 |
| **Creator Account ID**         | The Hedera account that created the schedule transaction in x.y.z format.                                                           |
| **Payer Account ID**           | The Hedera account paying for the execution of the scheduled transaction in x.y.z format.                                           |
| **Scheduled Transaction Body** | The transaction body of the transaction that is being scheduled by the schedule transaction.                                        |
| **Signatories**                | The public keys that have signed the transaction.                                                                                   |
| **Admin Key**                  | The key that can delete the schedule transaction, if set                                                                            |
| **Expiration Time**            | The date and time the schedule transaction will expire                                                                              |
| **Executed Time**              | The time the schedule transaction was executed. If the schedule transaction has not executed this field will be left null.          |
| **Deletion Time**              | The consensus time the schedule transaction was deleted. If the schedule transaction was not deleted, this field will be left null. |
| **Memo**                       | Publicly visible information about the Schedule entity, up to 100 bytes. No guarantee of uniqueness.                                |

<Note>
  #### **Recommend Using Mirror Node REST API**

  For obtaining schedule information and historical data, consider using the Mirror Node REST API endpoint [**Get Schedule by ID**](https://docs.hedera.com/api-reference/schedules/get-schedule-by-id) which offers several advantages:

  * **Cost-effective and scalable:** [Mirror node providers](/operators/mirror-node#mainnet) offer paid plans with a large number of queries included. The Hedera-hosted mirror node offers free queries with specific throttles for testing. While some SDK queries are currently free, these are subject to change in the future.
  * **Performance:** Mirror nodes don't burden consensus nodes, allowing them to focus on processing transactions and providing efficient access to historical data without impacting network performance.
  * **Historical data:** Mirror nodes store complete transaction history, records, and events - ideal for analytics, auditing, and monitoring past activity.
</Note>

**Query Signing Requirements**

* The transaction fee payer account key is required to sign

### Methods

<table><thead><tr><th>Method</th><th>Type</th><th>Requirement</th></tr></thead><tbody><tr><td><code>setScheduleId(\<scheduleId>)</code></td><td>ScheduleId</td><td>Required</td></tr><tr><td><code>\<ScheduleInfo>.scheduleId</code></td><td>ScheduleId</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.scheduledTransactionId</code></td><td>TransactionId</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.creatorAccountId</code></td><td>AccountId</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.payerAccountId</code></td><td>AccountId</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.adminKey</code></td><td>Key</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.signatories</code></td><td>Key</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.deletedAt</code></td><td>Instant</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.expirationAt</code></td><td>Instant</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.memo</code></td><td>String</td><td>Optional</td></tr><tr><td><code>\<ScheduleInfo>.waitForExpiry</code></td><td>boolean</td><td>Optional</td></tr></tbody></table>

<CodeGroup>
  ```java Java theme={null}
  //Create the query
  ScheduleInfoQuery query = new ScheduleInfoQuery()
       .setScheduleId(scheduleId);

  //Sign with the client operator private key and submit the query request to a node in a Hedera network
  ScheduleInfo info = query.execute(client);
  ```

  ```javascript JavaScript theme={null}
  //Create the query
  const query = new ScheduleInfoQuery()
       .setScheduleId(scheduleId);

  //Sign with the client operator private key and submit the query request to a node in a Hedera network
  const info = await query.execute(client);
  ```

  ```go Go theme={null}
  //Create the query
  query := hedera.NewScheduleInfoQuery().
  		SetScheduleID(scheduleId)

  //Sign with the client operator private key and submit to a Hedera network
  scheduleInfo, err := query.Execute(client)

  if err != nil {
  		panic(err)
  }
  ```

  ```rust Rust theme={null}
  // Create the query
  let query = ScheduleInfoQuery::new()
      .schedule_id(schedule_id);

  // Sign with the client operator private key and submit the query request to a node in a Hedera network
  let info = query.execute(&client).await?;

  // Print the schedule info
  println!("Schedule ID: {:?}", info.schedule_id);
  println!("Creator Account ID: {:?}", info.creator_account_id);
  println!("Payer Account ID: {:?}", info.payer_account_id);
  println!("Admin Key: {:?}", info.admin_key);
  println!("Signatories: {:?}", info.signatories);
  println!("Expiration Time: {:?}", info.expiration_time);
  println!("Executed Time: {:?}", info.executed_time);
  println!("Deleted Time: {:?}", info.deleted_time);
  println!("Memo: {:?}", info.memo);
  println!("Wait For Expiry: {:?}", info.wait_for_expiry);

  // v0.34.0
  ```
</CodeGroup>
