StackerDB

Endpoints for interacting with StackerDB instances.

Get StackerDB chunk (latest version)

get
/v2/stackerdb/{principal}/{contract_name}/{slot_id}

Get the latest version of a chunk of data from a StackerDB instance.

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

Standard Stacks address (standard principal, not contract principal). Must be 28-41 characters long using Stacks c32check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^S[PTMN][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26,39}$
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}$
slot_idinteger · max: 4294967295Required

Slot ID (u32 range)

Responses
chevron-right
200

StackerDB chunk data

application/octet-stream
string · binaryOptional
get
/v2/stackerdb/{principal}/{contract_name}/{slot_id}

Get StackerDB chunk (specific version)

get
/v2/stackerdb/{principal}/{contract_name}/{slot_id}/{slot_version}

Get a specific version of a chunk of data from a StackerDB instance.

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

Standard Stacks address (standard principal, not contract principal). Must be 28-41 characters long using Stacks c32check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^S[PTMN][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26,39}$
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}$
slot_idinteger · max: 4294967295Required

Slot ID (u32 range)

slot_versioninteger · max: 4294967295Required

Specific slot version (u32 range)

Responses
chevron-right
200

StackerDB chunk data

application/octet-stream
string · binaryOptional
get
/v2/stackerdb/{principal}/{contract_name}/{slot_id}/{slot_version}

Get StackerDB metadata

get
/v2/stackerdb/{principal}/{contract_name}

Get metadata about a StackerDB instance, including slot information.

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

Standard Stacks address (standard principal, not contract principal). Must be 28-41 characters long using Stacks c32check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^S[PTMN][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26,39}$
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}$
Responses
chevron-right
200

StackerDB metadata

application/json
slot_idintegerOptional

Slot identifier (unique for each DB instance)

slot_versionintegerOptional

Slot version (a lamport clock)

data_hashstringOptional

Data hash (hex, no 0x prefix)

signaturestringOptional

signature over the above (hex, no 0x prefix)

get
/v2/stackerdb/{principal}/{contract_name}

Write StackerDB chunk

post
/v2/stackerdb/{principal}/{contract_name}/chunks

Write a chunk of data to a StackerDB instance.

The request body should contain a JSON object with the chunk data including slot_id, slot_version, signature, and hex-encoded data.

The response indicates whether the chunk was accepted, and if not, provides detailed error information. Note that failed writes return HTTP 200 with accepted: false, not HTTP error codes.

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

Standard Stacks address (standard principal, not contract principal). Must be 28-41 characters long using Stacks c32check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^S[PTMN][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26,39}$
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}$
Body
slot_idinteger · max: 4294967295Required

Slot identifier (u32 range)

slot_versioninteger · max: 4294967295Required

Slot version (lamport clock, u32 range)

sigstringRequired

Hex-encoded signature from the stacker

Pattern: ^[0-9a-f]{130}$
datastringRequired

Hex-encoded chunk data (must be even length)

Pattern: ^([0-9a-f]{2})*$
Responses
chevron-right
200

Chunk submission result (both success and failure cases)

application/json
acceptedbooleanRequired

Whether the chunk was accepted

reasonstring · nullableOptional

JSON-encoded reason for rejection (only present when accepted is false)

codeinteger · nullableOptional

Error code (only present when accepted is false)

post
/v2/stackerdb/{principal}/{contract_name}/chunks

List StackerDB replicas

get
/v2/stackerdb/{principal}/{contract_name}/replicas

Get a list of replicas for a StackerDB instance.

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

Standard Stacks address (standard principal, not contract principal). Must be 28-41 characters long using Stacks c32check format.

Example: SP31DA6FTSJX2WGTZ69SFY11BH51NZMB0ZW97B5P0Pattern: ^S[PTMN][0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26,39}$
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}$
Responses
chevron-right
200

List of StackerDB replicas

application/json
ipstringOptional
portintegerOptional
public_key_hashstringOptional

20-byte public key hash

get
/v2/stackerdb/{principal}/{contract_name}/replicas

Last updated

Was this helpful?