Tezos Protocols API
The Protocols API from Tezos — 6 operation(s) for protocols.
The Protocols API from Tezos — 6 operation(s) for protocols.
openapi: 3.0.0
info:
title: TzKT Accounts Protocols API
description: "# Introduction\r\n\r\nTzKT is the most widely used tool in Tezos that provides you with convenient and flexible access to the Tezos blockchain data, processed and indexed by its own indexer. \r\nYou can fetch all historical data via REST API, or subscribe for real-time data via WebSocket API. TzKT was built by the joint efforts of the entire Tezos community \r\nto help developers build more services and dapps on top of Tezos.\r\n\r\nTzKT Indexer and API are [open-source](https://github.com/baking-bad/tzkt), so don't be afraid to depend on the third-party service,\r\nbecause you can always clone, build and run it yourself to have full control over all the components.\r\n\r\nFeel free to contact us if you have any questions or feature requests.\r\nYour feedback is much appreciated!\r\n\r\n- Discord: https://discord.gg/aG8XKuwsQd\r\n- Telegram: https://t.me/baking_bad_chat\r\n- X: https://x.com/TezosBakingBad\r\n- Email: hello@bakingbad.dev\r\n\r\nAnd don't forget to star TzKT [on GitHub](https://github.com/baking-bad/tzkt) if you like it \U0001F60A\r\n\r\n# Get Started\r\n\r\nThere are two API services provided for public use:\r\n- **Free TzKT API** with free anonymous access;\r\n- **TzKT Pro** with paid subscriptions with increased rate limits, off-chain data, extended support and business-level SLA.\r\n\r\nYou can find more details about differences between available tiers [here](https://tzkt.io/api).\r\n\r\n## Free TzKT API\r\n\r\nFree-tier TzKT API is the best way to get started and explore available Tezos data and API functionality.\r\nIt doesn't require authorization and is free for everyone and for both commercial and non-commercial use.\r\n\r\n> #### Note: attribution required\r\nIf you use free-tier TzKT API, you **must** mention it on your website or application by placing the label\r\n\"Powered by TzKT API\", or \"Built with TzKT API\", or \"Data provided by TzKT API\" with a direct link to [tzkt.io](https://tzkt.io).\r\n\r\nIt's available for the following Tezos networks with the following base URLs:\r\n\r\n- Mainnet: `https://api.tzkt.io/` or `https://api.mainnet.tzkt.io/` ([view docs](https://api.tzkt.io))\r\n- Ghostnet: `https://api.ghostnet.tzkt.io/` ([view docs](https://api.ghostnet.tzkt.io))\r\n- Shadownet: `https://api.shadownet.tzkt.io/` ([view docs](https://api.shadownet.tzkt.io))\r\n- Seoulnet: `https://api.seoulnet.tzkt.io/` ([view docs](https://api.seoulnet.tzkt.io))\r\n- Tallinnnet: `https://api.tallinnnet.tzkt.io/` ([view docs](https://api.tallinnnet.tzkt.io))\r\n\r\n### Sending Requests\r\n\r\nTo send a request to Free TzKT API you need literally nothing. Just take the base URL of the particular network\r\n(for example, Tezos mainnet: `https://api.tzkt.io`) and append the path of the particular endpoint\r\n(for example, chain's head: `/v1/head`), that's pretty much it: \r\n\r\n```bash\r\ncurl https://api.tzkt.io/v1/head\r\n```\r\n\r\nRead through this documentation to explore available endpoints, query parameters\r\n(note, if you click on a query parameter, you will see available modes, such as `.eq`, `.in`, etc.)\r\nand response models. If you have any questions, do not hesitate to ask for support, Tezos community has always been very friendly! \U0001F609\r\n\r\n### Rate Limits\r\n\r\nPlease, refer to https://tzkt.io/api to check relevant rate limits.\r\n\r\nIf you exceed the limit, the API will respond with `HTTP 429` status code.\r\n\r\n## TzKT Pro\r\n\r\nTzKT Pro is intended for professional use, for those who seek for extended capabilities, performance, reliability and business-level SLA.\r\nTzKT Pro service is provided via paid subscriptions. Please, refer to [Pricing Plans](https://tzkt.io/api) to check available tiers.\r\n\r\nIt's available for the following Tezos networks with the following base URLs:\r\n\r\n- Mainnet: `https://pro.tzkt.io/` ([view docs](https://api.tzkt.io))\r\n- Testnets: *let us know if you need TzKT Pro for testnets*\r\n\r\n### Authorization\r\n\r\nTo access TzKT Pro you will need to authorize requests with your personal API key, that you will receive on your email after purchasing a subscription.\r\nThis can be done by adding the query string parameter `?apikey={your_key}` or by adding the HTTP header `apikey: {your_key}`.\r\n\r\nNote that you can have multiple API keys within a single subscription.\r\n\r\nKeep your API keys private, do not publish it anywhere and do not hardcode it, especially in public repositories.\r\nIf your key was compromised, just let us know and we will issue a new one.\r\n\r\nAlso note that passing the API key via HTTP headers is more secure, because in HTTPS headers are encrypted,\r\nbut query string is not, so the key can be unintentionally exposed to third parties.\r\n\r\n### Sending Requests\r\n\r\nSending a request with the API key passed as a query string parameter:\r\n\r\n```bash\r\ncurl https://pro.tzkt.io/v1/head?apikey={your_key}\r\n```\r\n\r\nSending a request with the API key passed via an HTTP header:\r\n\r\n```bash\r\ncurl https://pro.tzkt.io/v1/head \\\r\n -H 'apikey: {your_key}'\r\n```\r\n\r\n### Rate Limits\r\n\r\nPlease, refer to https://tzkt.io/api to check relevant rate limits for different pricing plans.\r\n\r\nAlso, TzKT Pro provides you with the additional HTTP headers to show the allowed limits, number of available requests\r\nand the time remaining (in seconds) until the quota is reset. Here's an example:\r\n\r\n```\r\nRateLimit-Limit: 50\r\nRateLimit-Remaining: 49\r\nRateLimit-Reset: 1\r\n```\r\n\r\nIt also sends general information about your rate limits per second and per day:\r\n\r\n```\r\nX-RateLimit-Limit-Second: 50\r\nX-RateLimit-Remaining-Second: 49\r\nX-RateLimit-Limit-Day: 3000000\r\nX-RateLimit-Remaining-Day: 2994953\r\n```\r\n\r\nIf you exceed the limit, the API will respond with `HTTP 429` status code.\r\n"
contact:
name: Baking Bad Team
url: https://bakingbad.dev
email: hello@bakingbad.dev
version: 1.17.1
x-logo:
url: https://tzkt.io/logo.png
href: https://tzkt.io/
servers:
- url: https://api.tzkt.io
tags:
- name: Protocols
paths:
/v1/protocols/count:
get:
tags:
- Protocols
summary: Get protocols count
description: Returns the total number of protocols.
operationId: Protocols_GetCount
responses:
'200':
description: ''
content:
application/json:
schema:
type: integer
format: int32
/v1/protocols:
get:
tags:
- Protocols
summary: Get protocols
description: Returns a list of protocols.
operationId: Protocols_Get
parameters:
- name: sort
in: query
description: 'Sorts protocols by specified field. Supported fields: `code` (default), `firstLevel`, `lastLevel`.'
schema:
nullable: true
oneOf:
- $ref: '#/components/schemas/SortParameter'
x-position: 1
x-tzkt-extension: query-parameter
- name: offset
in: query
description: Specifies which or how many items should be skipped
schema:
nullable: true
oneOf:
- $ref: '#/components/schemas/OffsetParameter'
x-position: 2
x-tzkt-extension: query-parameter
- name: limit
in: query
description: Maximum number of items to return
schema:
type: integer
format: int32
default: 100
maximum: 10000.0
minimum: 0.0
x-position: 3
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Protocol'
/v1/protocols/current:
get:
tags:
- Protocols
summary: Get current protocol
description: Returns current protocol.
operationId: Protocols_GetCurrent
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Protocol'
/v1/protocols/{code}:
get:
tags:
- Protocols
summary: Get protocol by code
description: Returns a protocol with the specified proto code.
operationId: Protocols_GetByCode
parameters:
- name: code
in: path
required: true
description: Protocol code (e.g. 4 for Athens, 5 for Babylon, etc)
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Protocol'
/v1/protocols/{hash}:
get:
tags:
- Protocols
summary: Get protocol by hash
description: Returns a protocol with the specified hash.
operationId: Protocols_GetByHash
parameters:
- name: hash
in: path
required: true
description: Protocol hash
schema:
type: string
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Protocol'
/v1/protocols/cycles/{cycle}:
get:
tags:
- Protocols
summary: Get protocol by cycle
description: Returns a protocol at the specified cycle.
operationId: Protocols_GetByCycle
parameters:
- name: cycle
in: path
required: true
description: Cycle index
schema:
type: integer
format: int32
x-position: 1
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/Protocol'
components:
schemas:
SortParameter:
type: object
additionalProperties: false
properties:
asc:
type: string
description: '**Ascending** sort mode (optional, i.e. `sort.asc=id` is the same as `sort=id`). \
Specify a field name to sort by.
Example: `?sort=balance`.'
nullable: true
desc:
type: string
description: '**Descending** sort mode. \
Specify a field name to sort by descending.
Example: `?sort.desc=id`.'
nullable: true
x-tzkt-extension: query-parameter
ProtocolConstants:
type: object
additionalProperties: false
properties:
rampUpCycles:
type: integer
description: The number of cycles where security deposit is ramping up
format: int32
noRewardCycles:
type: integer
description: The number of cycles with no baking rewards
format: int32
consensusRightsDelay:
type: integer
description: Delay in cycles after which baking rights are assigned
format: int32
delegateParametersActivationDelay:
type: integer
description: Delay in cycles after which the parameters from `set_delegate_parameters` operations take effect
format: int32
blocksPerCycle:
type: integer
description: A number of blocks the cycle contains
format: int32
blocksPerCommitment:
type: integer
description: A number of blocks that indicates how often seed nonce hash is included in a block. Seed nonce hash presents in only one out of `blocksPerCommitment`
format: int32
blocksPerSnapshot:
type: integer
description: A number of blocks that indicates how often a snapshot (snapshots are records of the state of stake distributions) is taken
format: int32
blocksPerVoting:
type: integer
description: A number of block that indicates how long a voting period takes
format: int32
timeBetweenBlocks:
type: integer
description: Minimum amount of seconds between blocks
format: int32
attestersPerBlock:
type: integer
description: Number of bakers that assigned to attest a block
format: int32
hardOperationGasLimit:
type: integer
description: Maximum amount of gas that one operation can consume
format: int32
hardOperationStorageLimit:
type: integer
description: Maximum amount of storage that one operation can consume
format: int32
hardBlockGasLimit:
type: integer
description: Maximum amount of total gas usage of a single block
format: int32
minimalStake:
type: integer
description: Required number of tokens to get 1 roll (micro tez)
format: int64
minimalFrozenStake:
type: integer
description: Required number of tokens to be frozen by bakers (micro tez)
format: int64
blockDeposit:
type: integer
description: Security deposit for baking (producing) a block (micro tez)
format: int64
blockReward:
type: array
description: Reward for baking (producing) a block (micro tez)
items:
type: integer
format: int64
attestationDeposit:
type: integer
description: Security deposit for sending an attestation operation (micro tez)
format: int64
attestationReward:
type: array
description: Reward for sending an attestation operation (micro tez)
items:
type: integer
format: int64
originationSize:
type: integer
description: Initial storage size of an originated (created) account (bytes)
format: int32
byteCost:
type: integer
description: Cost of one storage byte in the blockchain (micro tez)
format: int32
proposalQuorum:
type: number
description: Percentage of the total number of voting power required to select a proposal on the proposal period
format: double
ballotQuorumMin:
type: number
description: The minimum value of quorum percentage on the exploration and promotion periods
format: double
ballotQuorumMax:
type: number
description: The maximum value of quorum percentage on the exploration and promotion periods
format: double
lbToggleThreshold:
type: integer
description: 1/2 window size of 2000 blocks with precision of 1000000 for integer computation
format: int32
consensusThreshold:
type: integer
description: Attestation quorum
format: int32
minParticipationNumerator:
type: integer
description: Number of attested slots needed to receive attestation rewards
format: int32
minParticipationDenominator:
type: integer
description: Number of attested slots needed to receive attestation rewards
format: int32
denunciationPeriod:
type: integer
description: Number of cycles after double baking/(pre)attestation where an accusation operation can be injected
format: int32
slashingDelay:
type: integer
description: Number of cycles after double baking/(pre)attestation evidence where slashing happens
format: int32
maxDelegatedOverFrozenRatio:
type: integer
description: The ratio of delegated tez over the baker’s frozen stake
format: int32
maxExternalOverOwnStakeRatio:
type: integer
description: The ratio of external staked balance over the baker’s own staked balance
format: int32
delegationPowerDivider:
type: integer
description: The divider by which delegation power is divided
format: int32
smartRollupOriginationSize:
type: integer
description: Initial storage size of an originated (created) smart rollup (bytes)
format: int32
smartRollupStakeAmount:
type: integer
description: Smart rollup commitment bond (mutez)
format: int64
smartRollupChallengeWindow:
type: integer
description: Window (in blocks) when it's possible to refute pending commitment
format: int32
smartRollupCommitmentPeriod:
type: integer
description: Period (in blocks) for publishing commitments
format: int32
smartRollupTimeoutPeriod:
type: integer
description: Period (in blocks) when a refutation game player must make a turn
format: int32
dalNumberOfShards:
type: integer
description: Number of DAL Shards
format: int32
dictator:
type: string
description: Governance dictator
nullable: true
endorsersPerBlock:
type: integer
description: '**DEPRECATED**'
format: int32
endorsementDeposit:
type: integer
description: '**DEPRECATED**'
format: int64
endorsementReward:
type: array
description: '**DEPRECATED**'
items:
type: integer
format: int64
Protocol:
type: object
additionalProperties: false
properties:
code:
type: integer
description: Protocol code, representing a number of protocol changes since genesis (mod 256, but `-1` for the genesis block)
format: int32
hash:
type: string
description: Hash of the protocol
version:
type: integer
description: Global version number
format: int32
firstLevel:
type: integer
description: Block height where the protocol was applied
format: int32
firstCycle:
type: integer
description: Index of the first cycle started with the protocol
format: int32
firstCycleLevel:
type: integer
description: Level of the first block of the first cycle started with the protocol
format: int32
lastLevel:
type: integer
description: Block height where the protocol ends. `null` if the protocol is active
format: int32
nullable: true
constants:
description: Information about the protocol constants
oneOf:
- $ref: '#/components/schemas/ProtocolConstants'
extras:
description: Off-chain extras
nullable: true
OffsetParameter:
type: object
additionalProperties: false
properties:
el:
type: integer
description: '**Elements** offset mode (optional, i.e. `offset.el=123` is the same as `offset=123`). \
Skips specified number of elements.
Example: `?offset=100`.'
format: int32
nullable: true
pg:
type: integer
description: '**Page** offset mode. \
Skips `page * limit` elements. This is a classic pagination.
Example: `?offset.pg=1`.'
format: int32
nullable: true
cr:
type: integer
description: '**Cursor** offset mode. \
Skips all elements with the `cursor` before (including) the specified value. Cursor is a field used for sorting, e.g. `id`.
Avoid using this offset mode with non-unique or non-sequential cursors such as `amount`, `balance`, etc.
Example: `?offset.cr=45837`.'
format: int64
nullable: true
x-tzkt-extension: query-parameter
x-generator: NSwag v14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))
x-tagGroups:
- name: REST API
tags:
- Accounts
- BigMaps
- Blocks
- Commitments
- Constants
- Contracts
- Cycles
- Delegates
- Domains
- Events
- Head
- Helpers
- Operations
- Protocols
- Quotes
- Rewards
- Rights
- SmartRollups
- Software
- Staking
- Statistics
- Tickets
- Tokens
- Voting
- name: WebSocket API
tags:
- Get Started
- Subscriptions
- Examples
- name: Libraries
tags:
- Typescript SDK
- Taquito extension