Smart Contracts

Endpoints for interacting with Clarity smart contracts.

Get contract interface

get
/v2/contracts/interface/{contract_address}/{contract_name}

Get contract interface using a contract_address and contract name

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Contract interface

application/json
get
/v2/contracts/interface/{contract_address}/{contract_name}

Get specific data-map inside a contract

post
/v2/map_entry/{contract_address}/{contract_name}/{map_name}

Attempt to fetch data from a contract data map. The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The map is identified with [Map Name].

The key to lookup in the map is supplied via the POST body. This should be supplied as the hex string serialization of the key (which should be a Clarity value). Note, this is a JSON string.

The response is a JSON object with the following properties:

  • data: The hex serialization of the map response. Note that map responses are Clarity option types, for non-existent values, this is a serialized none, and for all other responses, it is a serialized (some ...) object.

  • proof: The hex serialization of the Merkle proof for the data.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
map_namestring · min: 1 · max: 128RequiredPattern: ^([a-zA-Z0-9_]|[-!?+<>=/*]){1,128}$
Query parameters
proofinteger · enumOptional

Controls MARF proof inclusion in response. Set to 1 (default) to include proof, 0 to exclude. Invalid values default to 0 (no proof).

Default: 1Example: 1Possible values:
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Body
stringOptional
Responses
200

Success

application/json
post
/v2/map_entry/{contract_address}/{contract_name}/{map_name}

Get contract source

get
/v2/contracts/source/{contract_address}/{contract_name}

Returns the Clarity source code of a given contract, along with the block height it was published in, and the MARF proof for the data.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
Query parameters
proofinteger · enumOptional

Controls MARF proof inclusion in response. Set to 1 (default) to include proof, 0 to exclude. Invalid values default to 0 (no proof).

Default: 1Example: 1Possible values:
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Success

application/json
get
/v2/contracts/source/{contract_address}/{contract_name}

Call read-only function

post
/v2/contracts/call-read/{contract_address}/{contract_name}/{function_name}

Call a read-only public function on a given contract.

The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The function is identified with [Function Name].

The arguments to the function are supplied via the POST body. This should be a JSON object with two main properties:

  • sender which should be a standard Stacks address

  • arguments which should be an array of hex-encoded Clarity values.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
function_namestring · min: 1 · max: 128RequiredPattern: ^([a-zA-Z0-9_]|[-!?+<>=/*]){1,128}$
Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Body
senderstringRequired

The simulated tx-sender

sponsorstringOptional

The simulated sponsor address

argumentsstring[]Required

An array of hex serialized Clarity values

Responses
200

Function executed successfully

application/json
Responseone of

The result of a read-only function call.

or
post
/v2/contracts/call-read/{contract_address}/{contract_name}/{function_name}

Call read-only function in fast mode (no cost and memory tracking)

post
/v3/contracts/fast-call-read/{contract_address}/{contract_name}/{function_name}

Call a read-only public function on a given smart contract without cost tracking.

The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The function is identified with [Function Name].

The arguments to the function are supplied via the POST body. This should be a JSON object with two main properties:

  • sender which should be a standard Stacks address

  • arguments which should be an array of hex-encoded Clarity values.

This API endpoint requires a basic Authorization header.

Authorizations
authorizationstringRequired

Plain-text secret value that must exactly equal the node's configured password, which is set as connection_options.auth_token in the node's configuration file.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
function_namestring · min: 1 · max: 128RequiredPattern: ^([a-zA-Z0-9_]|[-!?+<>=/*]){1,128}$
Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Body
senderstringRequired

The simulated tx-sender

sponsorstringOptional

The simulated sponsor address

argumentsstring[]Required

An array of hex serialized Clarity values

Responses
200

Function executed successfully

application/json
Responseone of

The result of a read-only function call.

or
post
/v3/contracts/fast-call-read/{contract_address}/{contract_name}/{function_name}

Get trait implementation details

get
/v2/traits/{contract_address}/{contract_name}/{trait_contract_address}/{trait_contract_name}/{trait_name}

Determine whether or not a specified trait is implemented (either explicitly or implicitly) within a given contract.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
trait_contract_addressstring · min: 28 · max: 41Required

Stacks address of the trait-defining contract.

Example: SP2Z1K16238380NBP4T38A4G10A90Q03JJ2C2003Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
trait_contract_namestring · min: 1 · max: 128Required

Contract name of the trait-defining contract.

Example: some-traitPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
trait_namestring · min: 1 · max: 128RequiredExample: some-traitPattern: ^([a-zA-Z0-9_]|[-!?+<>=/*]){1,128}$
Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Success

application/json
get
/v2/traits/{contract_address}/{contract_name}/{trait_contract_address}/{trait_contract_name}/{trait_name}

Get the MARF value for a given key

get
/v2/clarity/marf/{marf_key_hash}

Attempt to fetch the value of a MARF key. The key is a 64-character hex string representing the MARF node hash.

Path parameters
marf_key_hashstring · min: 64 · max: 64Required

The 64-character hex-encoded hash of the MARF key.

Pattern: ^[0-9a-f]{64}$
Query parameters
proofinteger · enumOptional

Controls MARF proof inclusion in response. Set to 1 (default) to include proof, 0 to exclude. Invalid values default to 0 (no proof).

Default: 1Example: 1Possible values:
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Success

application/json
get
/v2/clarity/marf/{marf_key_hash}

Get the contract metadata for the metadata key

get
/v2/clarity/metadata/{contract_address}/{contract_name}/{clarity_metadata_key}

Attempt to fetch the metadata of a contract. The contract is identified with [Contract Address] and [Contract Name] in the URL path. The metadata key is identified with [Clarity Metadata Key].

In the response, data is formatted as JSON.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
clarity_metadata_keystringRequired

Metadata key

Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Success

application/json
get
/v2/clarity/metadata/{contract_address}/{contract_name}/{clarity_metadata_key}

Get the value of a constant inside a contract

get
/v2/constant_val/{contract_address}/{contract_name}/{constant_name}

Attempt to fetch the value of a constant inside a contract. The contract is identified with [Stacks Address] and [Contract Name] in the URL path. The constant is identified with [Constant Name].

In the response, data is the hex serialization of the constant value.

Path parameters
contract_addressstring · min: 28 · max: 41Required

Standard Stacks address (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0). Must be 28-41 characters long using Stacks base58check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
constant_namestring · min: 1 · max: 128RequiredPattern: ^([a-zA-Z0-9_]|[-!?+<>=/*]){1,128}$
Query parameters
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

Success

application/json
get
/v2/constant_val/{contract_address}/{contract_name}/{constant_name}

Get contract data variable

get
/v2/data_var/{principal}/{contract_name}/{var_name}

Fetch a data variable from a smart contract. Returns the raw hex-encoded value of the variable.

Path parameters
principalstring · min: 28 · max: 170Required

Stacks address (28-41 characters) or a Contract identifier in format {address}.{contract_name} (e.g. SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0.get-info). Contract names have a maximum length of 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0.get-infoPattern: ^([0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41})|([0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}\.[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127})$
contract_namestring · min: 1 · max: 128Required

Contract name. Must start with a letter and can contain letters, numbers, hyphens, and underscores. Maximum length is 40 characters for new contracts. Legacy contracts may have names up to 128 characters.

Example: get-infoPattern: ^[a-zA-Z]([a-zA-Z0-9]|[-_]){0,127}$
var_namestringRequired

Variable name

Query parameters
proofinteger · enumOptional

Controls MARF proof inclusion in response. Set to 1 (default) to include proof, 0 to exclude. Invalid values default to 0 (no proof).

Default: 1Example: 1Possible values:
tipstring · max: 64Optional

Stacks chain tip to query from. Options:

  • (empty/omitted): Use latest anchored tip (canonical confirmed state)
  • latest: Use latest known tip including unconfirmed microblocks
  • {block_id}: Use specific block ID (64 hex characters)
Example: latestPattern: ^(latest|[0-9a-f]{64})?$
Responses
200

The data variable value

application/json
get
/v2/data_var/{principal}/{contract_name}/{var_name}

Last updated

Was this helpful?