---
title: "Get contract"
method: GET
path: "/v2/contract/{chainId}/{address}"
tags: ["Contract Lookup"]
---

# Get contract

`GET /v2/contract/{chainId}/{address}`

By default returns minimal information about the contract: `match`, `creation_match`, `runtime_match`, `chainId`, `address`, and `verifiedAt`

To get other details one can either list the fields requested in the `fields` query param or ask all fields but omit several with `omit`. To get everything just pass `fields=all`.

For Sourcify-verified contracts, the response fields keep their usual Sourcify meanings. Tempo-native contracts such as native precompiles can also be returned from this endpoint. In that case, verification-specific fields such as `match`, `creationMatch`, `runtimeMatch`, `verifiedAt`, and `matchId` can be `null`, and Tempo-specific provenance and native source metadata is returned under `extensions.tempo`.

## Path parameters

- `chainId` 31318 | 42431 | 4217, required
- `address` string, required

## Query parameters

- `fields` string
- `omit` string

## Response `200`

Contract lookup response for a Sourcify-verified contract or a Tempo-native contract

- object
  - `match` 'match' | 'exact_match' | 'null', nullable, required — Verification status for the overall contract match. `null` when the contract is a Tempo-native contract that exposes source without Sourcify bytecode verification.
  - `creationMatch` 'match' | 'exact_match' | 'null', nullable, required — Verification status for creation bytecode matching. `null` when the contract is a Tempo-native contract that exposes source without Sourcify bytecode verification.
  - `runtimeMatch` 'match' | 'exact_match' | 'null', nullable, required — Verification status for runtime bytecode matching. `null` when the contract is a Tempo-native contract that exposes source without Sourcify bytecode verification.
  - `chainId` string, required
  - `address` string, required — Contract Address in hex string. Can be checksummed or not (i.e. can contain capital letters)
  - `verifiedAt` string, date-time, nullable — Timestamp when the contract was verified by Sourcify-compatible bytecode matching. `null` for Tempo-native contracts that only expose curated source.
  - `matchId` string, nullable — Identifier of the verified contract match. `null` for Tempo-native contracts that only expose curated source.
  - `creationBytecode` object
    - `onchainBytecode` string
    - `recompiledBytecode` string
    - `sourceMap` string
    - `linkReferences` object
      - `id` object
    - `cborAuxdata` object — CborAuxdata that is found on the recompiled bytecode.
    - `transformations` object[]
      - `id` string — Does not exist on `constructorArguments`. Used to find the corresponding value of the Transformation in the TransformationValues dictionary
      - `type` 'replace' | 'insert', required — `insert` when the transformation value is appended to the bytecode e.g. constructor arguments
      - `offset` integer, required
      - `reason` 'cborAuxdata' | 'library' | 'constructorArguments', required — Keep in mind the `library` reason is singular here but plural in the TransformationValues dictionary: `libraries`
    - `transformationValues` object
      - `libraries` object
      - `constructorArguments` string
      - `cborAuxdata` object — Different format than the `cborAuxdata` field under the bytecode object. Will be here only if there was a transformation on the cborAuxdata. If cborAuxdatas matched, there won't be a transformation.
  - `runtimeBytecode` object
    - `onchainBytecode` string
    - `recompiledBytecode` string
    - `sourceMap` string
    - `linkReferences` object
      - `id` object
    - `cborAuxdata` object — CborAuxdata that is found on the recompiled bytecode.
    - `immutableReferences` object
    - `transformations` object[]
      - `id` string — Does not exist on `callProtection`. Used to find the corresponding value of the Transformation in the TransformationValues dictionary
      - `type` 'replace', required — Runtime bytecode transformations won't have `insert`, because runtime does not have constructor arguments to be appended.
      - `offset` integer, required
      - `reason` 'cborAuxdata' | 'library' | 'immutable' | 'callProtection', required — Keep in mind the `library` and `immutable` reasons are singular here but plural in the TransformationValues dictionary: `libraries` and `immutables`
    - `transformationValues` object
      - `libraries` object
      - `immutables` object
      - `cborAuxdata` object — Different format than the `cborAuxdata` field under the bytecode object. Will be here only if there was a transformation on the cborAuxdata. If cborAuxdatas matched, there won't be a transformation.
      - `callProtection` string — Contract Address in hex string
  - `deployment` object
    - `transactionHash` string
    - `blockNumber` string
    - `transactionIndex` string
    - `deployer` string — Contract Address in hex string. Can be checksummed or not (i.e. can contain capital letters)
  - `sources` object
  - `compilation` object
    - `language` 'Solidity' | 'Vyper'
    - `compiler` string
    - `compilerVersion` string — The server accepts v prefixed but should only respond without the v prefix
    - `compilerSettings` object
    - `name` string
    - `fullyQualifiedName` string
  - `abi` object[]
  - `metadata` object
  - `storageLayout` object
  - `userdoc` object
  - `devdoc` object
  - `sourceIds` object — Same as stdJsonOutput.sources
  - `stdJsonInput` object — The input fields conforming the compiler standard-JSON format.
    - `language` 'Solidity' | 'Vyper'
    - `sources` object
    - `settings` object
  - `stdJsonOutput` object — The outputs conforming the compiler standard JSON format
    - `sources` object
    - `contracts` object — Contracts output in the standard JSON format. This will only contain the entry for the compilaton target contract, even if the `outputSelection` was `*`.
  - `signatures` object — The signatures of the contract grouped by type (function, event, error).
    - `function` object[] — Function signatures
      - `signature` string, required — The human-readable signature
      - `signatureHash32` string, required — The full 32-byte keccak256 hash of the signature
      - `signatureHash4` string, required — The 4-byte selector (first 4 bytes of the 32-byte hash)
    - `event` object[] — Event signatures
      - `signature` string, required — The human-readable signature
      - `signatureHash32` string, required — The full 32-byte keccak256 hash of the signature
      - `signatureHash4` string, required — The 4-byte selector (first 4 bytes of the 32-byte hash)
    - `error` object[] — Error signatures
      - `signature` string, required — The human-readable signature
      - `signatureHash32` string, required — The full 32-byte keccak256 hash of the signature
      - `signatureHash4` string, required — The 4-byte selector (first 4 bytes of the 32-byte hash)
  - `proxyResolution` object
    - `isProxy` boolean
    - `proxyType` string
    - `implementations` object[]
      - `name` string — Only present if the implementation contract was verified by Sourcify
      - `address` string — Contract Address in hex string. Can be checksummed or not (i.e. can contain capital letters)
    - `proxyResolutionError` object
      - `customCode` string, required — A string token to indicate the reason of the error
      - `message` string, required — The reasoning of the error
      - `errorId` string, uuid, required

## Other responses

- `400` — Bad request from the client
- `404` — The contract is not verified on Sourcify
- `429` — You are sending too many requests to the server
- `500`

## Changes

- **2026-07-17** `a76585f33723` — 5 breaking
  - the response property `allOf[subschema #1: VerifiedContractMinimal]/creationMatch` became nullable for the status `200`
  - the response property `allOf[subschema #1: VerifiedContractMinimal]/match` became nullable for the status `200`
  - the response property `allOf[subschema #1: VerifiedContractMinimal]/matchId` became nullable for the status `200`
  - the response property `allOf[subschema #1: VerifiedContractMinimal]/runtimeMatch` became nullable for the status `200`
  - …1 more
- **2026-03-09** `eef63cd83966` — 2 breaking, 1 warning, 6 info
  - the `path` request parameter `chainId` was restricted to a list of enum values
  - for the `path` request parameter `chainId`, the type/format was changed from `string`/`` to `integer`/``
  - changed the pattern of the `path` request parameter `address` from `(\b0x[a-fA-F0-9]{40}\b)` to `^0x[a-fA-F0-9]{40}$`
  - added the new enum value `31318.00` to the `path` request parameter `chainId`
  - …5 more
- **2025-12-17** `f02ddb386819` — 6 breaking, 3 warning, 1 info
  - removed the enum value `31318.00` from the `path` request parameter `chainId`
  - removed the enum value `4217.00` from the `path` request parameter `chainId`
  - removed the enum value `42431.00` from the `path` request parameter `chainId`
  - for the `path` request parameter `address`, the minLength was increased from `0` to `42`
  - …6 more

[Change history](https://skmtc.dev/tempoxyz/apis/contract-verification-api/changes/v2/contract/:chainId/:address/get.md)

---

[API](https://skmtc.dev/tempoxyz/apis/contract-verification-api.md) · [All operations](https://skmtc.dev/tempoxyz/apis/contract-verification-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tempoxyz/contract-verification-api/revisions/a76585f33723/schema)
