Tezos Protocols API

The Protocols API from Tezos — 6 operation(s) for protocols.

OpenAPI Specification

tezos-protocols-api-openapi.yml Raw ↑
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