Ava Labs Primary Network Transactions API
Find information about transactions on Avalanche's Primary Network Chains - the P-Chain, the X-Chain, and the C-Chain.
Find information about transactions on Avalanche's Primary Network Chains - the P-Chain, the X-Chain, and the C-Chain.
openapi: 3.1.0
info:
title: Data AVAX Supply Primary Network Transactions API
description: The Data API provides web3 application developers with multi-chain data related to Avalanche's primary network, Avalanche subnets, and Ethereum. With Data API, you can easily build products that leverage real-time and historical transaction and transfer history, native and token balances, and various types of token metadata. The API is in Beta and may be subject to change.</br></br>If you have feedback or feature requests for the API, please submit them <a href="https://portal.productboard.com/dndv9ahlkdfye4opdm8ksafi/tabs/4-glacier-api">here</a>. Bug reports can be submitted <a href="https://docs.google.com/forms/d/e/1FAIpQLSeJQrcp7QoNiqozMDKrVJGX5wpU827d3cVTgF8qa7t_J1Pb-g/viewform">here</a>, and any potential security issues can be reported <a href="https://immunefi.com/bounty/avalabs">here</a>.
version: 1.0.0
contact: {}
servers:
- url: https://glacier-api.avax.network
security:
- apiKey: []
- {}
tags:
- name: Primary Network Transactions
description: Find information about transactions on Avalanche's Primary Network Chains - the P-Chain, the X-Chain, and the C-Chain.
paths:
/v1/networks/{network}/blockchains/{blockchainId}/transactions/{txHash}:
get:
operationId: getTxByHash
x-execution-weight: medium
x-speakeasy-group: data.primaryNetwork.transactions
x-speakeasy-name-override: get
summary: Get transaction
description: Gets the details of a single transaction on one of the Primary Network chains.
parameters:
- name: blockchainId
required: true
in: path
description: A primary network blockchain id or alias.
example: p-chain
schema:
$ref: '#/components/schemas/BlockchainId'
- name: network
required: true
in: path
description: Either mainnet or testnet/fuji.
example: mainnet
schema:
$ref: '#/components/schemas/Network'
- name: txHash
required: true
in: path
description: A primary network (P or X chain) transaction hash.
example: 3P91K6nuDFvDodcRuJTsgdf9SvYe5pMiKk38HppsoeAiEztCP
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/PChainTransaction'
- $ref: '#/components/schemas/XChainNonLinearTransaction'
- $ref: '#/components/schemas/XChainLinearTransaction'
- $ref: '#/components/schemas/CChainExportTransaction'
- $ref: '#/components/schemas/CChainImportTransaction'
'400':
description: "Bad requests generally mean the client has passed invalid \n or malformed parameters. Error messages in the response could help in \n evaluating the error."
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
'401':
description: "When a client attempts to access resources that require \n authorization credentials but the client lacks proper authentication \n in the request, the server responds with 401."
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
'403':
description: "When a client attempts to access resources with valid\n credentials but doesn't have the privilege to perform that action, \n the server responds with 403."
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: "The error is mostly returned when the client requests\n with either mistyped URL, or the passed resource is moved or deleted, \n or the resource doesn't exist."
content:
application/json:
schema:
$ref: '#/components/schemas/NotFound'
'429':
description: "This error is returned when the client has sent too many,\n and has hit the rate limit."
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequests'
'500':
description: "The error is a generic server side error that is \n returned for any uncaught and unexpected issues on the server side. \n This should be very rare, and you may reach out to us if the problem \n persists for a longer duration."
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
'502':
description: "This is an internal error indicating invalid response \n received by the client-facing proxy or gateway from the upstream server."
content:
application/json:
schema:
$ref: '#/components/schemas/BadGateway'
'503':
description: "The error is returned for certain routes on a particular\n Subnet. This indicates an internal problem with our Subnet node, and may \n not necessarily mean the Subnet is down or affected."
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailable'
tags:
- Primary Network Transactions
x-codeSamples:
- lang: javascript
label: JavaScript
source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n network: \"mainnet\",\n});\n\nasync function run() {\n const result = await avalanche.data.primaryNetwork.transactions.get({\n blockchainId: \"p-chain\",\n txHash: \"3P91K6nuDFvDodcRuJTsgdf9SvYe5pMiKk38HppsoeAiEztCP\",\n });\n\n console.log(result);\n}\n\nrun();"
/v1/networks/{network}/blockchains/{blockchainId}/transactions:
get:
operationId: listLatestPrimaryNetworkTransactions
x-speakeasy-group: data.primaryNetwork.transactions
x-speakeasy-name-override: listLatest
x-speakeasy-pagination:
type: cursor
inputs:
- name: pageToken
in: parameters
type: cursor
outputs:
nextCursor: $.nextPageToken
x-execution-weight: xl
summary: List latest transactions
description: 'Lists the latest transactions on one of the Primary Network chains.
Transactions are filterable by addresses, txTypes, and timestamps. When querying for latest transactions without an address parameter, filtering by txTypes and timestamps is not supported. An address filter must be provided to utilize txTypes and timestamp filters.
For P-Chain, you can fetch all L1 validators related transactions like ConvertSubnetToL1Tx, IncreaseL1ValidatorBalanceTx etc. using the unique L1 validation ID. These transactions are further filterable by txTypes and timestamps as well.
Given that each transaction may return a large number of UTXO objects, bounded only by the maximum transaction size, the query may return less transactions than the provided page size. The result will contain less results than the page size if the number of utxos contained in the resulting transactions reach a performance threshold.'
parameters:
- name: addresses
required: false
in: query
description: A comma separated list of X-Chain or P-Chain wallet addresses, starting with "avax"/"fuji", "P-avax"/"P-fuji" or "X-avax"/"X-fuji". Also accepts EVM formatted addresses starting with "0x" for C-Chain-related atomic transaction lookups.
example: avax1h2ccj9f5ay5acl6tyn9mwmw32p8wref8vl8ctg
schema:
type: string
- name: l1ValidationId
required: false
in: query
schema:
type: string
- name: txTypes
required: false
in: query
example:
- AddValidatorTx
description: Query param for filtering items based on transaction types.
schema:
type: array
items:
$ref: '#/components/schemas/PrimaryNetworkTxType'
- name: startTimestamp
required: false
in: query
description: Query param for retrieving items after a specific timestamp.
example: 1689541049
schema:
minimum: 0
type: integer
- name: endTimestamp
required: false
in: query
description: Query param for retrieving items before a specific timestamp.
example: 1689800249
schema:
minimum: 0
type: integer
- name: pageToken
required: false
in: query
description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
schema:
type: string
- name: pageSize
required: false
in: query
description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 100.
schema:
type: integer
default: 10
minimum: 1
maximum: 100
example: '10'
- name: blockchainId
required: true
in: path
description: A primary network blockchain id or alias.
example: p-chain
schema:
$ref: '#/components/schemas/BlockchainId'
- name: network
required: true
in: path
description: Either mainnet or testnet/fuji.
example: mainnet
schema:
$ref: '#/components/schemas/Network'
- name: sortOrder
required: false
in: query
example: asc
description: The order by which to sort results. Use "asc" for ascending order, "desc" for descending order. Sorted by timestamp or the `sortBy` query parameter, if provided.
schema:
$ref: '#/components/schemas/SortOrder'
responses:
'200':
description: Successful response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ListPChainTransactionsResponse'
- $ref: '#/components/schemas/ListXChainTransactionsResponse'
- $ref: '#/components/schemas/ListCChainAtomicTransactionsResponse'
'400':
description: "Bad requests generally mean the client has passed invalid \n or malformed parameters. Error messages in the response could help in \n evaluating the error."
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
'401':
description: "When a client attempts to access resources that require \n authorization credentials but the client lacks proper authentication \n in the request, the server responds with 401."
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
'403':
description: "When a client attempts to access resources with valid\n credentials but doesn't have the privilege to perform that action, \n the server responds with 403."
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: "The error is mostly returned when the client requests\n with either mistyped URL, or the passed resource is moved or deleted, \n or the resource doesn't exist."
content:
application/json:
schema:
$ref: '#/components/schemas/NotFound'
'429':
description: "This error is returned when the client has sent too many,\n and has hit the rate limit."
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequests'
'500':
description: "The error is a generic server side error that is \n returned for any uncaught and unexpected issues on the server side. \n This should be very rare, and you may reach out to us if the problem \n persists for a longer duration."
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
'502':
description: "This is an internal error indicating invalid response \n received by the client-facing proxy or gateway from the upstream server."
content:
application/json:
schema:
$ref: '#/components/schemas/BadGateway'
'503':
description: "The error is returned for certain routes on a particular\n Subnet. This indicates an internal problem with our Subnet node, and may \n not necessarily mean the Subnet is down or affected."
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailable'
tags:
- Primary Network Transactions
x-codeSamples:
- lang: javascript
label: JavaScript
source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n network: \"mainnet\",\n});\n\nasync function run() {\n const result = await avalanche.data.primaryNetwork.transactions.listLatest({\n addresses: \"avax1h2ccj9f5ay5acl6tyn9mwmw32p8wref8vl8ctg\",\n txTypes: [\n \"AddValidatorTx\",\n ],\n startTimestamp: 1689541049,\n endTimestamp: 1689800249,\n pageSize: 10,\n blockchainId: \"p-chain\",\n sortOrder: \"asc\",\n });\n\n for await (const page of result) {\n console.log(page);\n }\n}\n\nrun();"
/v1/networks/{network}/blockchains/{blockchainId}/transactions:listStaking:
get:
operationId: listActivePrimaryNetworkStakingTransactions
x-speakeasy-group: data.primaryNetwork.transactions
x-speakeasy-name-override: listActiveStakingTransactions
x-speakeasy-pagination:
type: cursor
inputs:
- name: pageToken
in: parameters
type: cursor
outputs:
nextCursor: $.nextPageToken
x-execution-weight: xl
summary: List staking transactions
description: Lists active staking transactions on the P-Chain for the supplied addresses.
parameters:
- name: addresses
required: false
in: query
description: A comma separated list of X-Chain or P-Chain wallet addresses, starting with "avax"/"fuji", "P-avax"/"P-fuji" or "X-avax"/"X-fuji".
example: avax1h2ccj9f5ay5acl6tyn9mwmw32p8wref8vl8ctg
schema:
type: string
- name: txTypes
required: false
in: query
example:
- AddValidatorTx
description: Query param for filtering items based on transaction types.
schema:
type: array
items:
$ref: '#/components/schemas/PrimaryNetworkTxType'
- name: startTimestamp
required: false
in: query
description: Query param for retrieving items after a specific timestamp.
example: 1689541049
schema:
minimum: 0
type: integer
- name: endTimestamp
required: false
in: query
description: Query param for retrieving items before a specific timestamp.
example: 1689800249
schema:
minimum: 0
type: integer
- name: pageToken
required: false
in: query
description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
schema:
type: string
- name: pageSize
required: false
in: query
description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 100.
schema:
type: integer
default: 10
minimum: 1
maximum: 100
example: '10'
- name: blockchainId
required: true
in: path
description: A primary network blockchain id or alias.
example: p-chain
schema:
$ref: '#/components/schemas/PChainId'
- name: network
required: true
in: path
description: Either mainnet or testnet/fuji.
example: mainnet
schema:
$ref: '#/components/schemas/Network'
- name: sortOrder
required: false
in: query
example: asc
description: The order by which to sort results. Use "asc" for ascending order, "desc" for descending order. Sorted by timestamp or the `sortBy` query parameter, if provided.
schema:
$ref: '#/components/schemas/SortOrder'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListPChainTransactionsResponse'
'400':
description: "Bad requests generally mean the client has passed invalid \n or malformed parameters. Error messages in the response could help in \n evaluating the error."
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
'401':
description: "When a client attempts to access resources that require \n authorization credentials but the client lacks proper authentication \n in the request, the server responds with 401."
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
'403':
description: "When a client attempts to access resources with valid\n credentials but doesn't have the privilege to perform that action, \n the server responds with 403."
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: "The error is mostly returned when the client requests\n with either mistyped URL, or the passed resource is moved or deleted, \n or the resource doesn't exist."
content:
application/json:
schema:
$ref: '#/components/schemas/NotFound'
'429':
description: "This error is returned when the client has sent too many,\n and has hit the rate limit."
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequests'
'500':
description: "The error is a generic server side error that is \n returned for any uncaught and unexpected issues on the server side. \n This should be very rare, and you may reach out to us if the problem \n persists for a longer duration."
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
'502':
description: "This is an internal error indicating invalid response \n received by the client-facing proxy or gateway from the upstream server."
content:
application/json:
schema:
$ref: '#/components/schemas/BadGateway'
'503':
description: "The error is returned for certain routes on a particular\n Subnet. This indicates an internal problem with our Subnet node, and may \n not necessarily mean the Subnet is down or affected."
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailable'
tags:
- Primary Network Transactions
x-codeSamples:
- lang: javascript
label: JavaScript
source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n network: \"mainnet\",\n});\n\nasync function run() {\n const result = await avalanche.data.primaryNetwork.transactions.listActiveStakingTransactions({\n addresses: \"avax1h2ccj9f5ay5acl6tyn9mwmw32p8wref8vl8ctg\",\n txTypes: [\n \"AddValidatorTx\",\n ],\n startTimestamp: 1689541049,\n endTimestamp: 1689800249,\n pageSize: 10,\n blockchainId: \"p-chain\",\n sortOrder: \"asc\",\n });\n\n for await (const page of result) {\n console.log(page);\n }\n}\n\nrun();"
/v1/networks/{network}/blockchains/{blockchainId}/assets/{assetId}/transactions:
get:
operationId: listAssetTransactions
x-speakeasy-group: data.primaryNetwork.transactions
x-speakeasy-pagination:
type: cursor
inputs:
- name: pageToken
in: parameters
type: cursor
outputs:
nextCursor: $.nextPageToken
x-execution-weight: xl
summary: List asset transactions
description: Lists asset transactions corresponding to the given asset id on the X-Chain.
parameters:
- name: txTypes
required: false
in: query
example:
- AddValidatorTx
description: Query param for filtering items based on transaction types.
schema:
type: array
items:
$ref: '#/components/schemas/PrimaryNetworkTxType'
- name: startTimestamp
required: false
in: query
description: Query param for retrieving items after a specific timestamp.
example: 1689541049
schema:
minimum: 0
type: integer
- name: endTimestamp
required: false
in: query
description: Query param for retrieving items before a specific timestamp.
example: 1689800249
schema:
minimum: 0
type: integer
- name: pageToken
required: false
in: query
description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
schema:
type: string
- name: pageSize
required: false
in: query
description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 100.
schema:
type: integer
default: 10
minimum: 1
maximum: 100
example: '10'
- name: blockchainId
required: true
in: path
description: A primary network blockchain id or alias.
example: x-chain
schema:
$ref: '#/components/schemas/XChainId'
- name: network
required: true
in: path
description: Either mainnet or testnet/fuji.
example: mainnet
schema:
$ref: '#/components/schemas/Network'
- name: assetId
required: true
in: path
description: Asset ID for any asset on X-Chain
example: th5aLdWLi32yS9ED6uLGoMMubqHjzMsXhKWwzP6yZTYQKYzof
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListXChainTransactionsResponse'
'400':
description: "Bad requests generally mean the client has passed invalid \n or malformed parameters. Error messages in the response could help in \n evaluating the error."
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
'401':
description: "When a client attempts to access resources that require \n authorization credentials but the client lacks proper authentication \n in the request, the server responds with 401."
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
'403':
description: "When a client attempts to access resources with valid\n credentials but doesn't have the privilege to perform that action, \n the server responds with 403."
content:
application/json:
schema:
$ref: '#/components/schemas/Forbidden'
'404':
description: "The error is mostly returned when the client requests\n with either mistyped URL, or the passed resource is moved or deleted, \n or the resource doesn't exist."
content:
application/json:
schema:
$ref: '#/components/schemas/NotFound'
'429':
description: "This error is returned when the client has sent too many,\n and has hit the rate limit."
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequests'
'500':
description: "The error is a generic server side error that is \n returned for any uncaught and unexpected issues on the server side. \n This should be very rare, and you may reach out to us if the problem \n persists for a longer duration."
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
'502':
description: "This is an internal error indicating invalid response \n received by the client-facing proxy or gateway from the upstream server."
content:
application/json:
schema:
$ref: '#/components/schemas/BadGateway'
'503':
description: "The error is returned for certain routes on a particular\n Subnet. This indicates an internal problem with our Subnet node, and may \n not necessarily mean the Subnet is down or affected."
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceUnavailable'
tags:
- Primary Network Transactions
x-codeSamples:
- lang: javascript
label: JavaScript
source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n network: \"mainnet\",\n});\n\nasync function run() {\n const result = await avalanche.data.primaryNetwork.transactions.listAssetTransactions({\n txTypes: [\n \"AddValidatorTx\",\n ],\n startTimestamp: 1689541049,\n endTimestamp: 1689800249,\n pageSize: 10,\n blockchainId: \"x-chain\",\n assetId: \"th5aLdWLi32yS9ED6uLGoMMubqHjzMsXhKWwzP6yZTYQKYzof\",\n });\n\n for await (const page of result) {\n console.log(page);\n }\n}\n\nrun();"
components:
schemas:
BadRequest:
type: object
properties:
message:
description: The error message describing the reason for the exception
oneOf:
- type: string
- type: array
items:
type: string
statusCode:
type: number
description: The HTTP status code of the response
examples:
- 400
error:
type: string
description: The type of error
examples:
- Bad Request
required:
- message
- statusCode
- error
BlsCredentials:
type: object
properties:
publicKey:
type: string
proofOfPossession:
type: string
required:
- publicKey
- proofOfPossession
RewardType:
type: string
enum:
- VALIDATOR
- DELEGATOR
- VALIDATOR_FEE
CChainImportTransaction:
type: object
properties:
txHash:
type: string
description: Unique ID for this transaction.
examples:
- 3j9JpF1aGuQtLLbo3YkvvKkWrCZViXZjdeJQWUSEY5hcqUn2c
blockHeight:
type: number
description: Height of the block this transaction belongs to.
examples:
- 1005
blockHash:
type: string
description: Hash of the block this transaction belongs to.
examples:
- '0x57a5cb7704561d1d59bd563b6421021b7563960c05ba3ae0e36fc36917c742ee'
timestamp:
type: number
description: Latest timestamp in seconds this transaction was accepted.
examples:
- 1600762738
memo:
type: string
description: Hex encoded memo bytes for this transaction.
examples:
- '0x546865204176616c616e6368652050726f6a656374'
amountUnlocked:
description: Assets unlocked by inputs of this transaction.
type: array
items:
$ref: '#/components/schemas/AssetAmount'
amountCreated:
description: Assets created by outputs of this transaction.
type: array
items:
$ref: '#/components/schemas/AssetAmount'
sourceChain:
type: string
description: Source chain for an atomic transaction.
examples:
- 2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM
destinationChain:
type: string
description: Destination chain for an atomic transaction.
examples:
- 2oYMBNV4eNHyqk2fjjV5nVQLDbtmNJzq5s3qs3Lo6ftnC6FByM
txType:
type: string
description: Type of transaction.
enum:
- ImportTx
examples:
- ImportTx
evmOutputs:
type: array
items:
$ref: '#/components/schemas/EVMOutput'
consumedUtxos:
type: array
items:
$ref: '#/components/schemas/Utxo'
required:
- txHash
- blockHeight
- blockHash
- timestamp
- memo
- amountUnlocked
- amountCreated
- sourceChain
- destinationChain
- txType
- evmOutputs
- consumedUtxos
TransactionVertexDetail:
type: object
properties:
hash:
type: string
description: Vertex ID of the vertex this transaction belongs to.
examples:
- 82qPRREHmh8Cfta4PGD6GymY9ZLyvgYugqW6hj9FykpMVRz1S
height:
type: number
description: Vertex height of the vertex this transaction belongs to.
examples:
- 1961
timestamp:
type: number
description: Timestamp in seconds this vertex was accepted.
examples:
- 1600762738
required:
- hash
- height
- timestamp
BadGateway:
type: object
properties:
message:
description: The error message describing the reason for the exception
oneOf:
- type: string
- type: array
items:
type: string
statusCode:
type: number
description: The HTTP status code of the response
examples:
- 502
error:
type: string
description: The type of error
examples:
- Bad Gateway
required:
- message
- statusCode
- error
BlockchainInfo:
type: object
properties:
chainName:
type: string
vmId:
type: string
genesisData:
type: object
description: The genesis data of the blockchain. Present for CreateChainTx. EVM based chains will return the genesis data as an object. Non-EVM based chains will return the genesis data as an encoded string. The encoding depends on the VM
required:
- chainName
- vmId
EVMOutput:
type: object
properties:
toAddress:
type: string
description: EVM address to which the asset is imported in ImportTx
examples:
- '0xD0f2898e49d941D6d479B381d3C8F0bd8d983b4c'
asset:
description: AssetAmount details for the asset being transferred.
allOf:
- $ref: '#/components/schemas/AssetAmount'
required:
- toAddress
- asset
Unauthorized:
type: object
properties:
message:
description: The error message describing the reason for the exception
oneOf:
- type: string
- type: array
items:
type: string
statusCode:
type: number
description: The HTTP status code of the response
examples:
- 401
error:
type: string
description: The type of error
examples:
- Unauthorized
required:
- message
- statusCode
- error
PChainUtxo:
type: object
properties:
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ava-labs/refs/heads/main/openapi/ava-labs-primary-network-transactions-api-openapi.yml