---
title: "Get contract by identifier"
method: GET
path: "/experimental/v1/contracts/{identifier}"
tags: ["Contracts"]
---

# Get contract by identifier

`GET /experimental/v1/contracts/{identifier}`

Returns the latest deployment for the contract with the given identifier.

## Path parameters

- `identifier` string, required — Address-qualified Cadence contract identifier (e.g. `A.1654653399040a61.EVM`).

## Query parameters

- `expand` string[]
- `select` string[]

## Response `200`

The contract deployment.

- ContractDeployment
  - `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

## Other responses

- `400` — Bad request (invalid identifier).
- `404` — No contract found for the given identifier.
- `429` — Too many requests.

## Changes

- **2026-03-03** `70791e5544f0` — 1 breaking, 1 info
  - the response property `code` became optional for the status `200`
  - added the optional property `_expandable/code` to the response with the `200` status
- **2026-02-28** `5dbfe72ac388` — 1 info
  - added the optional property `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 `_expandable/result` to the response with the `200` status

[Full history](https://skmtc.dev/onflow/apis/flow-experimental-api/changes/experimental/v1/contracts/:identifier/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)
