Pocket Network API API

PATH API endpoints

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pokt-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

pokt-api-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: PATH - Path & Toolkit Harness API API
  description: PATH (Path API & Toolkit Harness) is an open source framework for enabling access to a decentralized supply network. It provides various tools and libraries to streamline the integration and interaction with decentralized protocols.
  version: 1.0.0
  contact:
    name: Grove Engineering
    email: engineering@grove.city
servers:
- url: https://{serviceId}.rpc.grove.city
  description: Production PATH URL with service-specific subdomain
  variables:
    serviceId:
      default: eth
      description: The service ID that determines the subdomain
      enum:
      - arb-one
      - arb-sepolia-testnet
      - avax
      - avax-dfk
      - base
      - base-sepolia-testnet
      - bera
      - bitcoin
      - blast
      - boba
      - bsc
      - celo
      - eth
      - eth-holesky-testnet
      - eth-sepolia-testnet
      - fantom
      - fraxtal
      - fuse
      - gnosis
      - harmony
      - ink
      - iotex
      - kaia
      - kava
      - linea
      - mantle
      - metis
      - moonbeam
      - moonriver
      - near
      - oasys
      - op
      - op-sepolia-testnet
      - opbnb
      - pocket
      - poly
      - poly-amoy-testnet
      - poly-zkevm
      - radix
      - scroll
      - sei
      - sonic
      - sui
      - taiko
      - taiko-hekla-testnet
      - tron
      - xrplevm
      - xrplevm-testnet
      - zklink-nova
      - zksync-era
- url: http://localhost:3069
  description: Local PATH instance
security:
- ApiKeyAuth: []
tags:
- name: API
  description: PATH API endpoints
paths:
  /v1:
    post:
      tags:
      - API
      summary: EVM Service Request
      description: "Handles EVM service requests. This endpoint processes API requests and forwards them to the appropriate endpoint in the Pocket Network.\n\n**Server Usage & Authentication:**\n- **Subdomain URLs** (`https://{serviceId}.rpc.grove.city`):\n  - Service ID determined from subdomain, no `Target-Service-Id` header needed\n  - **Requires** `Portal-Application-ID` header with your Grove Portal Application ID\n  - **Optional** `Authorization` header with Grove API Key (if your portal app requires it)\n- **Local PATH** (`http://localhost:3069`):\n  - **Requires** `Target-Service-Id` header to specify the service\n  - No authentication headers required\n"
      operationId: 1handleServiceRequest
      parameters:
      - $ref: '#/components/parameters/PortalApplicationIdParam'
      - $ref: '#/components/parameters/PortalAPIKey'
      - $ref: '#/components/parameters/TargetServiceIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  description: JSON-RPC version
                  example: '2.0'
                method:
                  type: string
                  description: Method to call
                  example: eth_blockNumber
                params:
                  type: array
                  description: Parameters for the method
                  items:
                    type: object
                  example: []
                id:
                  type: integer
                  description: Request identifier
                  example: 1
            examples:
              eth_blockNumber:
                summary: Ethereum Block Number Request
                value:
                  jsonrpc: '2.0'
                  method: eth_blockNumber
                  params: []
                  id: 1
              eth_call:
                summary: Call a Contract Method
                value:
                  jsonrpc: '2.0'
                  method: eth_call
                  params:
                  - to: '0x6b175474e89094c44da98b954eedeac495271d0f'
                    data: '0x70a08231000000000000000000000000b5d85cbf7cb3ee0d56b3bb207d5fc4b82f43f511'
                  - latest
                  id: 2
              eth_getTransactionReceipt:
                summary: Get Transaction Receipt
                value:
                  jsonrpc: '2.0'
                  method: eth_getTransactionReceipt
                  params:
                  - '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
                  id: 3
              eth_getBlockByNumber:
                summary: Get Block By Number
                value:
                  jsonrpc: '2.0'
                  method: eth_getBlockByNumber
                  params:
                  - '0x1b4'
                  - true
                  id: 4
              eth_getBalance:
                summary: Get Account Balance
                value:
                  jsonrpc: '2.0'
                  method: eth_getBalance
                  params:
                  - '0xc94770007dda54cF92009BFF0dE90c06F603a09f'
                  - latest
                  id: 5
              eth_chainId:
                summary: Get Chain ID
                value:
                  jsonrpc: '2.0'
                  method: eth_chainId
                  params: []
                  id: 6
              eth_getTransactionCount:
                summary: Get Transaction Count for Address
                value:
                  jsonrpc: '2.0'
                  method: eth_getTransactionCount
                  params:
                  - '0xc94770007dda54cF92009BFF0dE90c06F603a09f'
                  - latest
                  id: 7
              eth_getTransactionByHash:
                summary: Get Transaction By Hash
                value:
                  jsonrpc: '2.0'
                  method: eth_getTransactionByHash
                  params:
                  - '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
                  id: 8
              eth_gasPrice:
                summary: Get Current Gas Price
                value:
                  jsonrpc: '2.0'
                  method: eth_gasPrice
                  params: []
                  id: 9
      responses:
        '200':
          description: Successful JSON-RPC response
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: JSON-RPC version
                    example: '2.0'
                  id:
                    type: integer
                    description: Request identifier that matches the request
                    example: 1
                  result:
                    type: string
                    description: Result of the request (format depends on the method called)
                    example: '0xc96eae'
              examples:
                eth_blockNumber:
                  summary: Ethereum Block Number Response
                  value:
                    jsonrpc: '2.0'
                    id: 1
                    result: '0xc96eae'
                eth_call:
                  summary: Contract Call Response
                  value:
                    jsonrpc: '2.0'
                    id: 2
                    result: '0x000000000000000000000000000000000000000000000000000000012a05f200'
                eth_getTransactionReceipt:
                  summary: Transaction Receipt Response
                  value:
                    jsonrpc: '2.0'
                    id: 3
                    result:
                      blockHash: '0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2'
                      blockNumber: '0x5daf3b'
                      contractAddress: null
                      cumulativeGasUsed: '0x7f110'
                      effectiveGasPrice: '0x7f110'
                      from: '0xa7d9ddbe1f17865597fbd27ec712455208b6b76d'
                      gasUsed: '0x5208'
                      logs: []
                      logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
                      status: '0x1'
                      to: '0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb'
                      transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
                      transactionIndex: '0x1'
                eth_getBlockByNumber:
                  summary: Block By Number Response
                  value:
                    jsonrpc: '2.0'
                    id: 4
                    result:
                      number: '0x1b4'
                      hash: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
                      parentHash: '0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5'
                      nonce: '0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2'
                      sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
                      logsBloom: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
                      transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'
                      stateRoot: '0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff'
                      miner: '0x4e65fda2159562a496f9f3522f89122a3088497a'
                      difficulty: '0x027f07'
                      totalDifficulty: '0x027f07'
                      extraData: '0x0000000000000000000000000000000000000000000000000000000000000000'
                      size: '0x027f07'
                      gasLimit: '0x9f759'
                      gasUsed: '0x9f759'
                      timestamp: '0x54e34e8e'
                      transactions:
                      - hash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b'
                        nonce: 0x
                        blockHash: '0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b'
                        blockNumber: '0x15df'
                        transactionIndex: '0x1'
                        from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1'
                        to: 0x85h43d8a49eeb85d32cf465507dd71d507100c1
                        value: '0x7f110'
                        gas: '0x7f110'
                        gasPrice: '0x09184e72a000'
                        input: '0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360'
                      uncles: []
                eth_getBalance:
                  summary: Account Balance Response
                  value:
                    jsonrpc: '2.0'
                    id: 5
                    result: '0x0234c8a3397aab58'
                eth_chainId:
                  summary: Chain ID Response
                  value:
                    jsonrpc: '2.0'
                    id: 6
                    result: '0x1'
                eth_getTransactionCount:
                  summary: Transaction Count Response
                  value:
                    jsonrpc: '2.0'
                    id: 7
                    result: '0x1'
                eth_getTransactionByHash:
                  summary: Transaction By Hash Response
                  value:
                    jsonrpc: '2.0'
                    id: 8
                    result:
                      blockHash: '0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2'
                      blockNumber: '0x5daf3b'
                      from: '0xa7d9ddbe1f17865597fbd27ec712455208b6b76d'
                      gas: '0x24a22'
                      gasPrice: '0x2540be400'
                      hash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
                      input: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675'
                      nonce: '0x9'
                      to: '0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb'
                      transactionIndex: '0x1'
                      value: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675'
                      type: '0x0'
                      v: '0x1c'
                      r: '0x4e65fda2159562a496f9f3522f89122a3088497a'
                      s: '0x7a25abe9ee27691173cd5f82c7382755dd7d2bb7feea88a61b599ede1dd944'
                eth_gasPrice:
                  summary: Gas Price Response
                  value:
                    jsonrpc: '2.0'
                    id: 9
                    result: '0x4a817c800'
  /healthz:
    get:
      tags:
      - API
      summary: Health Check
      description: Returns a JSON health check response indicating the ready status of PATH
      operationId: 2healthCheck
      security: []
      responses:
        '200':
          description: Health check successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  message:
                    type: string
                    example: PATH is up and running
                  version:
                    type: string
                    example: 1.0.0
                  readyStates:
                    type: object
                    additionalProperties:
                      type: boolean
                    example:
                      endpoint-hydrator: true
                      pokt-shannon: true
                  configuredServiceIDs:
                    type: array
                    items:
                      type: string
                    example:
                    - eth
                    - poly
                    - avax
  /disqualified_endpoints:
    get:
      tags:
      - API
      summary: Disqualified Endpoints
      description: Returns a JSON list of disqualified endpoints for a given service ID.
      operationId: 3disqualifiedEndpoints
      parameters:
      - $ref: '#/components/parameters/TargetServiceIdParam'
      responses:
        '200':
          description: Successfully retrieved disqualified endpoints
          content:
            application/json:
              schema:
                type: object
                properties:
                  protocol_level_data_response:
                    type: object
                    properties:
                      permanently_sanctioned_endpoints:
                        type: object
                      session_sanctioned_endpoints:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            endpoint_addr:
                              type: string
                            reason:
                              type: string
                            service_id:
                              type: string
                            sanction_type:
                              type: string
                            error_type:
                              type: string
                            session_height:
                              type: integer
                            created_at:
                              type: string
                              format: date-time
                      permanent_sanctioned_endpoints_count:
                        type: integer
                      session_sanctioned_endpoints_count:
                        type: integer
                      total_sanctioned_endpoints_count:
                        type: integer
                  qos_level_data_response:
                    type: object
                    properties:
                      disqualified_endpoints:
                        type: object
                      empty_response_count:
                        type: integer
                      chain_id_check_errors_count:
                        type: integer
                      archival_check_errors_count:
                        type: integer
                      block_number_check_errors_count:
                        type: integer
                  total_service_endpoints_count:
                    type: integer
                  valid_service_endpoints_count:
                    type: integer
                  invalid_service_endpoints_count:
                    type: integer
              examples:
                successResponse:
                  summary: Successful disqualified endpoints response
                  value:
                    protocol_level_data_response:
                      permanently_sanctioned_endpoints: {}
                      session_sanctioned_endpoints: {}
                      permanent_sanctioned_endpoints_count: 0
                      session_sanctioned_endpoints_count: 0
                      total_sanctioned_endpoints_count: 0
                    qos_level_data_response:
                      disqualified_endpoints: {}
                      empty_response_count: 0
                      chain_id_check_errors_count: 0
                      archival_check_errors_count: 0
                      block_number_check_errors_count: 0
                    total_service_endpoints_count: 5
                    valid_service_endpoints_count: 5
                    invalid_service_endpoints_count: 0
                disqualifiedEndpointsExample:
                  summary: Response with disqualified endpoints
                  value:
                    protocol_level_disqualified_endpoints:
                      permanently_sanctioned_endpoints: {}
                      session_sanctioned_endpoints:
                        pokt13771d0a403a599ee4a3812321e2fabc509e7f3-https://us-west-test-endpoint-1.demo:
                          supplier_address: pokt13771d0a403a599ee4a3812321e2fabc509e7f3
                          endpoint_url: https://us-west-test-endpoint-1.demo
                          app_addr: pokt1ccae0ce5ef5b1bcd74f3794f5b717b98a86412
                          session_id: 5a496c9faaabbaa1d184cf89ddfeb603ff515b990c6f714701b71572ab750ae8
                          service_id: base
                          reason: 'relay error: relay: error sending request to endpoint https://us-west-test-endpoint-1.demo: Post "https://us-west-test-endpoint-1.demo": dial tcp: lookup us-west-demo1-base-json.demo.do: no such host'
                          sanction_type: SHANNON_SANCTION_SESSION
                          error_type: SHANNON_ENDPOINT_ERROR_TIMEOUT
                          session_height: 23951
                          created_at: '2025-05-31T14:57:41.484372+01:00'
                      permanent_sanctioned_endpoints_count: 0
                      session_sanctioned_endpoints_count: 1
                      total_sanctioned_endpoints_count: 1
                    qos_level_disqualified_endpoints:
                      disqualified_endpoints:
                        pokt1ccae0ce5ef5b1bcd74f3794f5b717b98a86412-https://us-west-test-endpoint-1.demo:
                          endpoint_addr: pokt1ccae0ce5ef5b1bcd74f3794f5b717b98a86412-https://us-west-test-endpoint-1.demo
                          reason: endpoint has not returned an archival balance response to a "eth_getBalance" request
                          service_id: base
                      empty_response_count: 0
                      chain_id_check_errors_count: 0
                      archival_check_errors_count: 1
                      block_number_check_errors_count: 0
                    total_service_endpoints_count: 11
                    qualified_service_endpoints_count: 9
                    disqualified_service_endpoints_count: 2
        '400':
          description: Bad request - Target-Service-Id header is required or invalid
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
              examples:
                missingHeader:
                  summary: Missing Target-Service-Id header
                  value:
                    error: 400 Bad Request
                    message: Target-Service-Id header is required
                invalidServiceId:
                  summary: Invalid service ID
                  value:
                    error: 400 Bad Request
                    message: 'invalid service ID: no apps matched the request for service: earth'
components:
  parameters:
    PortalApplicationIdParam:
      name: Portal-Application-ID
      in: header
      required: false
      description: 'Grove Portal Application ID for authentication.


        **Required when using:**

        - `https://{serviceId}.rpc.grove.city` (production subdomain URLs)


        **Not required when using:**

        - `http://localhost:3069` (local PATH instance)


        Get yours at https://portal.grove.city/

        '
      schema:
        type: string
      example: your-grove-portal-app-id
    PortalAPIKey:
      name: Authorization
      in: header
      required: false
      description: 'Grove API Key for authorization (optional).


        **When to use:**

        - Required if your Grove Portal application requires API key authorization

        - Not required for applications without API key restrictions

        - Only applicable when using production URLs (`https://{serviceId}.rpc.grove.city`)

        - Not used with local PATH instances (`http://localhost:3069`)


        Get yours at https://portal.grove.city/

        '
      schema:
        type: string
      example: your-api-key
    TargetServiceIdParam:
      name: Target-Service-Id
      in: header
      required: false
      description: 'The service ID to route the request to (required for local PATH instance)


        **Required when using:**

        - `http://localhost:3069` (local PATH instance)


        **Not required when using:**

        - `https://{serviceId}.rpc.grove.city` (service-specific subdomain URLs)


        When using subdomain-based URLs, the service ID is automatically determined from the subdomain.

        '
      schema:
        type: string