Civic Pass API

Issue and manage Civic Passes

Business capability
Identity & Access Management BC-620.20

Operations 5

POST /pass List Civic Passes #
POST /pass/{chain}/{chainNetwork} Issue a Civic Pass #
GET /pass/{chain}/{chainNetwork}/{wallet} Retrieve a Civic Pass #
PATCH /pass/{chain}/{chainNetwork}/{wallet} Update a Civic Pass #
DELETE /pass/{chain}/{chainNetwork}/{wallet} Revoke a Civic Pass #

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/civic:civic-pass-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

civic-pass-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Civic Customer Pass API
  description: The APIs described below enable Civic customers to issue and manage the Civic Pass for their dApp.
  termsOfService: https://www.civic.com/legal/terms-of-service-civic-pass-v1/
  contact:
    email: devsupport@civic.com
  version: 1.0.0
servers:
- url: https://api.civic.com/partner
tags:
- name: Pass
  description: Issue and manage Civic Passes
paths:
  /pass:
    post:
      tags:
      - Pass
      summary: List Civic Passes
      description: Returns a list of all Civic Passes you have issued. Optionally filtered by the Civic Pass attributes. A pass may take a few seconds to a few minutes to show up here after issuing, depending on blockchain confirmation times.
      operationId: listPass
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                limit:
                  type: number
                  default: 20
                  description: Number of records to return per page (used together with 'skip' for pagination)
                skip:
                  type: number
                  default: 0
                  description: Number of records to skip (used together with 'limit' for pagination)
                filter:
                  type: object
                  properties:
                    state:
                      $ref: '#/components/schemas/State'
                    walletAddress:
                      type: string
                      example: 4v4PL5bMZXXvQB3mvWPXLvqfJpjJmPRnPrmENnUESQQQ
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  records:
                    type: array
                    items:
                      type: object
                      $ref: '#/components/schemas/PassResponse'
      security:
      - pass_auth:
        - write:token
        - read:token
  /pass/{chain}/{chainNetwork}:
    post:
      tags:
      - Pass
      summary: Issue a Civic Pass
      description: Issue a Civic Pass to a user's wallet. This action is asynchronous, i.e. it does not wait for the Civic Pass to be confirmed on-chain before returning.
      operationId: issuePass
      parameters:
      - name: chain
        in: path
        description: The type of blockchain that the Civic Pass was issued on.
        required: true
        example: ethereum
        schema:
          $ref: '#/components/schemas/Chain'
      - name: chainNetwork
        in: path
        description: The blockchain network
        required: true
        explode: true
        example: sepolia
        schema:
          $ref: '#/components/schemas/ChainNetwork'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Wallet'
        required: true
      responses:
        '202':
          description: The issuance of the Civic Pass has been initiated.
          content:
            application/json:
              schema:
                type: object
                $ref: '#/components/schemas/PassResponse'
        '401':
          description: Unauthorized
        '400':
          description: Client error
      security:
      - pass_auth:
        - write:token
        - read:token
  /pass/{chain}/{chainNetwork}/{wallet}:
    get:
      tags:
      - Pass
      summary: Retrieve a Civic Pass
      description: Retrieve the full details about a Civic Pass you issued, including a log of all events associated with the specific pass. A pass may take a few seconds to a few minutes to show up here after issuing, depending on blockchain confirmation times.
      operationId: getPass
      parameters:
      - name: chain
        in: path
        description: The blockchain type that the Civic Pass was issued on.
        required: true
        example: ethereum
        schema:
          $ref: '#/components/schemas/Chain'
      - name: wallet
        in: path
        description: The user's wallet the Civic Pass was issued to.
        required: true
        example: '0xEA5Ce8F9C81b681876DC713d33371c3E262A5888'
        schema:
          type: string
      - name: chainNetwork
        in: path
        description: The blockchain network
        required: true
        explode: true
        example: sepolia
        schema:
          $ref: '#/components/schemas/ChainNetwork'
      responses:
        '200':
          description: The Civic Pass associated with the given wallet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PassResponse'
        '404':
          description: No Civic pass is associatied with the given wallet.
      security:
      - pass_auth:
        - write:token
        - read:token
    patch:
      tags:
      - Pass
      summary: Update a Civic Pass
      description: Updates either the status or the expiration timestamp of a Civic Pass. This action is asynchronous, i.e. it does not wait for updates to be confirmed on-chain before returning. To immediately expire a pass, for example to force a user to refresh, set an expiration data a couple of second in the future.
      operationId: patchPass
      parameters:
      - name: chain
        in: path
        description: The blockchain type that the Civic Pass was issued on.
        required: true
        example: ethereum
        schema:
          $ref: '#/components/schemas/Chain'
      - name: wallet
        in: path
        description: The user's wallet the Civic Pass was issued to.
        required: true
        example: '0xEA5Ce8F9C81b681876DC713d33371c3E262A5888'
        schema:
          type: string
      - name: chainNetwork
        in: path
        description: The blockchain network
        required: true
        explode: true
        example: sepolia
        schema:
          $ref: '#/components/schemas/ChainNetwork'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateState'
        required: true
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                example:
                  status: ok
      security:
      - pass_auth:
        - write:token
        - read:token
    delete:
      tags:
      - Pass
      summary: Revoke a Civic Pass
      operationId: deletePass
      description: Revoking a Civic Pass is **irreversible**. After the Civic Pass has been revoked, it is not possible to issue a new Civic Pass to the same {chain, wallet, network} combination.
      parameters:
      - name: chain
        in: path
        description: The blockchain type that the Civic Pass was issued on.
        required: true
        example: ethereum
        schema:
          $ref: '#/components/schemas/Chain'
      - name: wallet
        in: path
        description: The user's wallet the Civic Pass was issued to.
        required: true
        example: '0xEA5Ce8F9C81b681876DC713d33371c3E262A5888'
        schema:
          type: string
      - name: chainNetwork
        in: path
        description: The blockchain network
        required: true
        explode: true
        example: sepolia
        schema:
          $ref: '#/components/schemas/ChainNetwork'
      responses:
        '200':
          description: The revocation has been initiated.
      security:
      - pass_auth:
        - write:token
        - read:token
components:
  schemas:
    Chain:
      type: string
      description: The chain type
      enum:
      - solana
      - ethereum
    UpdateState:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/State'
        expiryTimestamp:
          description: The new expiration timestamp
          example: 1677593295
          type: number
    ChainNetwork:
      type: string
      description: The chain network
      enum:
      - mainnet-beta
      - devnet
      - mainnet
      - sepolia
      - polygonAmoy
      - polygonMainnet
      - polygonZKEVM
      - polygonZKEVMTestnet
      - optimismSepolia
      - optimismMainnet
      - arbitrumSepolia
      - arbitrumMainnet
      - avalancheCChain
      - avalancheCChainFuji
      - xdcMainnet
      - xdcApothem
      - fantomMainnet
      - fantomTestnet
      - baseSepolia
      - baseMainnet
      - bscMainnet
      - bscTestnet
      - xlayerMainnet
      - xlayerTestnet
      - unichainMainnet
      - unichainSepolia
      - sonicMainnet
      - sonicTestnet
    PassResponse:
      type: object
      properties:
        chain:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/Chain'
            network:
              $ref: '#/components/schemas/ChainNetwork'
          required:
          - type
          - network
        gatekeeperNetwork:
          description: The address of the [Gatekeeper Network](https://docs.civic.com/civic-pass/integrate/turnkey-integration/selecting-a-pass) this Civic Pass was issued for.
          type: string
          example: tgnuXXNMDLK8dy7Xm1TdeGyc95MDym4bvAQCwcW21Bf
        walletAddress:
          description: The wallet address that the Civic Pass is issued for.
          type: string
          example: 4v4PL5bMZXXvQB3mvWPXLvqfJpjJmPRnPrmENnUESQQQ
        events:
          description: Any action on a Civic Pass results in an event that is appended to this list.
          type: array
          items:
            type: object
            properties:
              eventType:
                type: string
                enum:
                - TOKEN_ISSUED_INITIATED
                - TOKEN_ISSUED
                - TOKEN_FROZEN_INITIATED
                - TOKEN_FROZEN
                - TOKEN_EXPIRY_CHANGED_INITIATED
                - TOKEN_EXPIRY_CHANGED
                - TOKEN_UNFROZEN_INITIATED
                - TOKEN_UNFROZEN
                - TOKEN_REVOKED_INITIATED
                - TOKEN_REVOKED
              timestamp:
                type: number
                example: 1677588899
              transaction:
                description: If the event has an associated chain transaction,its details are found here.
                type: object
                properties:
                  identifier:
                    type: string
                    example: 4GWazp2AqMmxkE6GKCoYf9rbgFL6eDTuMx9z7719eccSeCEYu9hiCvmcr9cK6ioiTUGZzvcWf6iB7fd3YCg39PT6
                  status:
                    type: string
                    enum:
                    - sent
                    - confirmed
                    - failed
                required:
                - identifier
            required:
            - eventType
            - timestamp
        id:
          description: A unique, Civic-speficic identifier for the Civic Pass.
          type: string
          example: 63fdf96c58f1ae40a26a89be
        onChainState:
          type: string
          enum:
          - ACTIVE
          - FROZEN
          - REVOKED
        state:
          type: string
          enum:
          - ACTIVE
          - FROZEN
          - REVOKED
          - REQUESTED
      required:
      - chain
      - gatekeeperNetwork
      - walletAddress
      - events
      - id
      - onChainState
      - state
    State:
      type: string
      description: Available status
      enum:
      - ACTIVE
      - REVOKED
      - FROZEN
      - REQUESTED
      - REJECTED
    Wallet:
      type: object
      description: The wallet address to issue this token to
      properties:
        walletAddress:
          type: string
          example: '0xEA5Ce8F9C81b681876DC713d33371c3E262A5888'
  securitySchemes:
    pass_auth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth0.civic.com/oauth/token
          scopes: {}