---
title: "List contracts"
method: GET
path: "/experimental/v1/contracts"
tags: ["Contracts"]
---

# List contracts

`GET /experimental/v1/contracts`

Returns a paginated list of contracts (latest deployment per unique contract identifier),
ordered descending by contract address.
Results can be filtered by contract name and block height range.

## Query parameters

- `cursor` string, base64 — Opaque pagination cursor from a previous response's `next_cursor` field.
- `limit` integer
- `contract_name` string
- `start_block` string, uint64
- `end_block` string, uint64
- `expand` string[]
- `select` string[]

## Response `200`

A page of contracts.

- ContractsResponse
  - `contracts` ContractDeployment[], required
    - `contract_id` string, required — Address-qualified Cadence contract identifier (e.g. `A.1654653399040a61.EVM`).
    - `address` string, hexadecimal, required — The 8-byte address of an account.
    - `block_height` string, uint64 — Block height at which this deployment was applied.
    - `transaction_id` string, hexadecimal — A 32-byte unique identifier for an entity.
    - `tx_index` string, uint32 — Position of the deploying transaction within its block.
    - `event_index` string, uint32 — Position of the contract event within its transaction.
    - `code` string, byte — Base64-encoded Cadence source code of the contract deployed.
    - `code_hash` string, hexadecimal, required — Hex-encoded SHA3-256 hash of the contract code.
    - `is_placeholder` boolean — True if the deployment was created during bootstrapping based on the current chain state, not based on a protocol event. When true, block_height, transaction_id, tx_index, and event_index are absent.
    - `transaction` Transaction
      - `id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
      - `script` string, base64, required — Base64 encoded Cadence script.
      - `arguments` string[], required — Array of Base64 encoded arguments with in [JSON-Cadence interchange format](https://docs.onflow.org/cadence/json-cadence-spec/).
      - `reference_block_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
      - `gas_limit` string, uint64, required — The limit on the amount of computation a transaction is allowed to perform.
      - `payer` string, hexadecimal, required — The 8-byte address of an account.
      - `proposal_key` ProposalKey, required
        - `address` string, hexadecimal, required — The 8-byte address of an account.
        - `key_index` string, uint64, required
        - `sequence_number` string, uint64, required
      - `authorizers` Address[], required
      - `payload_signatures` TransactionSignature[], required
        - `address` string, hexadecimal, required — The 8-byte address of an account.
        - `key_index` string, uint64, required
        - `signature` string, byte, required — A variable length signature.
      - `envelope_signatures` TransactionSignature[], required
        - `address` string, hexadecimal, required — The 8-byte address of an account.
        - `key_index` string, uint64, required
        - `signature` string, byte, required — A variable length signature.
      - `result` TransactionResult
        - `block_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
        - `collection_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
        - `execution` 'Pending' | 'Success' | 'Failure' — This value indicates whether the transaction execution succeeded or not, this value should be checked when determining transaction success.
        - `status` 'Pending' | 'Finalized' | 'Executed' | 'Sealed' | 'Expired', required — This value indicates the state of the transaction execution. Only sealed and expired are final and immutable states.
        - `status_code` integer, required
        - `error_message` string, required — Provided transaction error in case the transaction wasn't successful.
        - `computation_used` string, uint64, required
        - `events` Event[], required
          - `type` string, required — The qualified event type.
          - `transaction_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
          - `transaction_index` string, uint64, required
          - `event_index` string, uint64, required
          - `payload` string, byte, required
        - `_links` Links
          - `_self` string
      - `_expandable` object, required
        - `result` string, uri
      - `_links` Links
        - `_self` string
    - `result` TransactionResult
      - `block_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
      - `collection_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
      - `execution` 'Pending' | 'Success' | 'Failure' — This value indicates whether the transaction execution succeeded or not, this value should be checked when determining transaction success.
      - `status` 'Pending' | 'Finalized' | 'Executed' | 'Sealed' | 'Expired', required — This value indicates the state of the transaction execution. Only sealed and expired are final and immutable states.
      - `status_code` integer, required
      - `error_message` string, required — Provided transaction error in case the transaction wasn't successful.
      - `computation_used` string, uint64, required
      - `events` Event[], required
        - `type` string, required — The qualified event type.
        - `transaction_id` string, hexadecimal, required — A 32-byte unique identifier for an entity.
        - `transaction_index` string, uint64, required
        - `event_index` string, uint64, required
        - `payload` string, byte, required
      - `_links` Links
        - `_self` string
    - `_expandable` object, required — Contains URI links for fields not included in the response. When a field is expanded via the `expand` query parameter, it appears inline and is removed from `_expandable`.
      - `code` string, uri — Link to fetch the Cadence source code of this deployment.
      - `transaction` string, uri — Link to fetch the full transaction that applied this deployment.
      - `result` string, uri — Link to fetch the transaction result.
    - `_links` Links
      - `_self` string
  - `next_cursor` string, base64 — Opaque pagination cursor from a previous response's `next_cursor` field.

## Other responses

- `400` — Bad request (invalid filter parameters, cursor, or limit).
- `429` — Too many requests.

## Changes

> 24 revisions in range; 1 could not be searched.

- **2026-03-03** `70791e5544f0` — 1 breaking, 1 info
  - the response property `contracts/items/code` became optional for the status `200`
  - added the optional property `contracts/items/_expandable/code` to the response with the `200` status
- **2026-02-28** `5dbfe72ac388` — 1 info
  - added the optional property `contracts/items/result` to the response with the `200` status
- **2026-02-27** `85a743ac32f4` — 1 info
  - endpoint added
- **2026-02-27** `8e6df1082d5e` — 1 breaking
  - api path removed without deprecation
- **2026-02-27** `d9dee34cdec1` — 1 info
  - added the optional property `contracts/items/_expandable/result` to the response with the `200` status

[Full history](https://skmtc.dev/onflow/apis/flow-experimental-api/changes/experimental/v1/contracts/get.md)

---

[API](https://skmtc.dev/onflow/apis/flow-experimental-api.md) · [All operations](https://skmtc.dev/onflow/apis/flow-experimental-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/onflow/flow-experimental-api/revisions/9f7bc0dffcce/schema)
