Cortex Verifications API

The Verifications API from Cortex — 3 operation(s) for verifications.

Operations 7

GET /api/v1/verification-periods Retrieve verification periods #
POST /api/v1/verification-periods Create a verification period #
DELETE /api/v1/verification-periods/{periodCid} Delete a verification period #
GET /api/v1/verification-periods/{periodCid} Retrieve a verification period #
PUT /api/v1/verification-periods/{periodCid} Update a verification period #
GET /api/v1/verifications Retrieve verifications #
PUT /api/v1/verifications Verify entities in bulk #

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/cortex-idp:cortex-idp-verifications-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

cortex-idp-verifications-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Cortex REST API provides programmatic access to the data in the catalog, Scorecards, and more.
  title: Cortex Verifications API
  version: v1
servers:
- url: https://api.getcortexapp.com
  description: Cortex Cloud API host
security:
- bearerAuth: []
tags:
- name: Verifications
paths:
  /api/v1/verification-periods:
    get:
      description: Returns every verification period in the workspace, open or closed, with a count of how many entities are outstanding.
      operationId: listVerificationPeriods
      parameters:
      - description: Number of results to return per page, between 1 and 1000. Default 250.
        in: query
        name: pageSize
        required: true
        schema:
          type: integer
          format: int32
          default: 250
      - description: Page number to return, 0-indexed. Default 0.
        in: query
        name: page
        required: true
        schema:
          type: integer
          format: int32
          default: 0
      - description: Return only periods that are open today (true) or only those that are not (false). Omit for all periods.
        example: true
        in: query
        name: isActive
        required: false
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListVerificationPeriods'
          description: All verification periods
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Retrieve verification periods
      tags:
      - Verifications
      x-cortex-mcp-description: List verification periods, open or closed, each with a count of the entities that are still outstanding. Pass isActive=true for the periods that are open today. Call this first to find the periodCid that the verification tools need.
      x-cortex-mcp-enabled: 'true'
    post:
      description: Opens a verification campaign over the entities its scope selects. Every selected entity gets a PENDING verification immediately, except under a cqlQuery scope, which is evaluated in the background, so the counts read zero until it finishes.
      operationId: createVerificationPeriod
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertVerificationPeriodRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationPeriodSummary'
          description: The created verification period
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: endDate is before startDate, or a named role does not exist
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Create a verification period
      tags:
      - Verifications
      x-cortex-mcp-description: Create a verification period (campaign) with a name, startDate, endDate and scope. The scope selects entities by types, entityGroups, excludedEntityGroups and/or cqlQuery; an empty scope covers every entity. Every entity in scope gets a PENDING verification right away. A cqlQuery scope is evaluated in the background, so the counts show zero until it finishes. Optional requiredRoles, requiredCustomRoleTags and requiredTeamRoleTags limit who may verify. Each call creates a new period and is not idempotent.
      x-cortex-mcp-enabled: 'true'
  /api/v1/verification-periods/{periodCid}:
    delete:
      description: Closes the period and stops it appearing in reads, along with the verifications recorded against it. The CID is not reissued, so the period cannot be restored through this API.
      operationId: deleteVerificationPeriod
      parameters:
      - description: The CID of the verification period
        example: vp0a1b2c3d4e5f6789
        in: path
        name: periodCid
        required: true
        schema:
          type: string
      responses:
        '204':
          description: The period was deleted
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Verification period not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Delete a verification period
      tags:
      - Verifications
      x-cortex-mcp-description: Cortex Verification Periods API - Read the verification periods a workspace runs, their schedule and scope, and how many entities are still outstanding
      x-cortex-mcp-enabled: 'false'
    get:
      operationId: retrieveVerificationPeriod
      parameters:
      - description: The CID of the verification period
        example: vp0a1b2c3d4e5f6789
        in: path
        name: periodCid
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationPeriodSummary'
          description: The verification period
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Verification period not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Retrieve a verification period
      tags:
      - Verifications
      x-cortex-mcp-description: Get one verification period by its CID, including its schedule, the entity filter that sets its scope, who may verify, and how many entities are outstanding. Use listVerificationPeriods to find the CID.
      x-cortex-mcp-enabled: 'true'
    put:
      description: 'Replaces the period in full; omitted optional fields are cleared rather than left alone. Changing the scope changes who owes a verification: widening it adds PENDING entries, and narrowing it removes entries along with any answer already recorded for them.'
      operationId: updateVerificationPeriod
      parameters:
      - description: The CID of the verification period
        example: vp0a1b2c3d4e5f6789
        in: path
        name: periodCid
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertVerificationPeriodRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationPeriodSummary'
          description: The updated verification period
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: endDate is before startDate, or a named role does not exist
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Verification period not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Update a verification period
      tags:
      - Verifications
      x-cortex-mcp-description: 'Update a verification period by its CID. This replaces the period in full, so optional fields that are left out are cleared; call retrieveVerificationPeriod first and send the complete definition. Changing the scope is destructive: widening it adds PENDING entries, and narrowing it deletes the entries for removed entities, including answers already recorded.'
      x-cortex-mcp-enabled: 'true'
  /api/v1/verifications:
    get:
      description: Returns every verification in the workspace, one entry per entity and verification period, including entities that have not been verified yet. Each entry names the entity it belongs to, and who verified it once someone has.
      operationId: listVerifications
      parameters:
      - description: Number of results to return per page, between 1 and 1000. Default 250.
        in: query
        name: pageSize
        required: true
        schema:
          type: integer
          format: int32
          default: 250
      - description: Page number to return, 0-indexed. Default 0.
        in: query
        name: page
        required: true
        schema:
          type: integer
          format: int32
          default: 0
      - description: Return only verifications belonging to this verification period
        example: vp0a1b2c3d4e5f6789
        in: query
        name: periodCid
        required: false
        schema:
          type: string
      - description: Return only verifications in this state
        example: PENDING
        in: query
        name: status
        required: false
        schema:
          type: string
          enum:
          - PENDING
          - VERIFIED_CORRECT
          - VERIFIED_INCORRECT
      - description: Return only verifications whose period is open today (true) or only those whose period is not (false). Omit for all periods.
        example: true
        in: query
        name: isActive
        required: false
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListVerifications'
          description: A page of verifications
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Retrieve verifications
      tags:
      - Verifications
      x-cortex-mcp-description: List verifications across the catalog, one entry per entity and verification period, including entities nobody has verified yet. Each entry names the entity, the period it belongs to, the status (PENDING, VERIFIED_CORRECT, VERIFIED_INCORRECT), and who verified it. Filter by periodCid, status, or isActive=true for periods that are open today. Use this to answer who still owes a verification, and which entities were reported incorrect.
      x-cortex-mcp-enabled: 'true'
    put:
      description: 'Answers many entity-and-period pairs in one call. Each entry is answered on its own merits: an entity the caller may not verify is returned under `errors` while the rest are still recorded, because eligibility depends on who owns each entity. Read `errors` on every response -- a 200 does not mean every entry was recorded.'
      operationId: bulkVerifyEntities
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkVerifyRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkVerifyResponse'
          description: The entries that were recorded, and the entries that were not
        '429':
          $ref: '#/components/responses/TooManyRequests'
      summary: Verify entities in bulk
      tags:
      - Verifications
      x-cortex-mcp-description: Cortex Verifications API - Read who has verified which entities, for which verification period, and which entities are still outstanding
      x-cortex-mcp-enabled: 'false'
components:
  schemas:
    BulkVerifyResponse:
      required:
      - errors
      - verifications
      type: object
      properties:
        errors:
          type: array
          description: The entries that were not recorded, each naming the entity and period it came from
          items:
            $ref: '#/components/schemas/BulkVerifyError'
        verifications:
          type: array
          description: The answers that were recorded
          items:
            $ref: '#/components/schemas/BulkVerifyResult'
      description: What a bulk verify recorded, and what it declined to record
    VerificationPeriod:
      required:
      - cid
      - endDate
      - isActive
      - name
      - startDate
      type: object
      properties:
        cid:
          type: string
          description: Stable identifier for the period
          example: vp0a1b2c3d4e5f6789
        description:
          type: string
          description: What owners are being asked to confirm
        endDate:
          type: string
          description: When the period closes
          format: date-time
        isActive:
          type: boolean
          description: Whether the period is open today, and so still accepting verifications
          example: true
        name:
          type: string
          description: Display name
          example: Q3 Ownership Review
        startDate:
          type: string
          description: When the period opens
          format: date-time
      description: A time-boxed entity verification campaign
    VerificationCounts:
      required:
      - pending
      - verifiedCorrect
      - verifiedIncorrect
      type: object
      properties:
        pending:
          type: integer
          description: Entities not yet verified
          format: int64
          example: 12
        verifiedCorrect:
          type: integer
          description: Entities confirmed correct
          format: int64
          example: 40
        verifiedIncorrect:
          type: integer
          description: Entities flagged incorrect
          format: int64
          example: 3
      description: Entity counts for one verification period
    VerificationEntitySummary:
      required:
      - cid
      - name
      - tag
      - type
      type: object
      properties:
        cid:
          type: string
          description: Stable identifier
          example: en0a1b2c3d4e5f6789
        name:
          type: string
          description: Display name
          example: Payments API
        tag:
          type: string
          description: The entity's tag
          example: payments-api
        type:
          type: string
          description: The entity's type
          example: service
      description: Enough of an entity to identify it and look it up
    BulkVerifyError:
      required:
      - code
      - entity
      - message
      - periodCid
      type: object
      properties:
        code:
          type: string
          description: Why the entry was not recorded. Branch on this rather than on the message.
          example: NOT_AN_OWNER
          enum:
          - ENTITY_NOT_FOUND
          - PERIOD_NOT_FOUND
          - ENTITY_NOT_IN_PERIOD_SCOPE
          - DUPLICATE_ENTRY
          - STATUS_NOT_AN_ANSWER
          - REASON_REQUIRED
          - PERIOD_NOT_OPEN
          - MISSING_REQUIRED_ROLE
          - NOT_AN_OWNER
        entity:
          type: string
          description: The entity, as the request named it
        message:
          type: string
          description: The reason in words, fixed to the code rather than written per entry
          example: You do not own this entity
        periodCid:
          type: string
          description: The verification period
      description: One entry that was not recorded, and why
    EntityVerificationWithEntity:
      required:
      - entity
      - period
      - status
      type: object
      properties:
        entity:
          $ref: '#/components/schemas/VerificationEntitySummary'
        period:
          $ref: '#/components/schemas/VerificationPeriod'
        reason:
          type: string
          description: Why the entity was marked incorrect, when the verifier supplied one
          example: Ownership moved to the payments team
        status:
          type: string
          description: PENDING until someone verifies the entity for this period, then the answer they gave
          example: VERIFIED_CORRECT
          enum:
          - PENDING
          - VERIFIED_CORRECT
          - VERIFIED_INCORRECT
        verifiedAt:
          type: string
          description: When the entity was verified
          format: date-time
        verifiedByApiKey:
          $ref: '#/components/schemas/ApiKeyVerifier'
        verifiedByUser:
          $ref: '#/components/schemas/CortexUserSummary'
      description: One entity's status for one verification period, with the entity named
    BulkVerifyResult:
      required:
      - entity
      - periodCid
      - status
      type: object
      properties:
        entity:
          type: string
          description: The entity, as the request named it
        periodCid:
          type: string
          description: The verification period
        reason:
          type: string
          description: Why the entity was marked incorrect, when a reason was given
        status:
          type: string
          description: The answer recorded
          example: VERIFIED_CORRECT
          enum:
          - PENDING
          - VERIFIED_CORRECT
          - VERIFIED_INCORRECT
        verifiedAt:
          type: string
          description: When the entity was verified
          format: date-time
        verifiedByApiKey:
          $ref: '#/components/schemas/ApiKeyVerifier'
        verifiedByUser:
          $ref: '#/components/schemas/CortexUserSummary'
      description: One recorded answer
    BulkVerifyRequest:
      required:
      - verifications
      type: object
      properties:
        verifications:
          type: array
          description: The answers to record
          items:
            $ref: '#/components/schemas/VerifyEntityEntry'
      description: Answers for many entity-and-period pairs
    ListVerificationPeriods:
      required:
      - page
      - periods
      - total
      - totalPages
      type: object
      properties:
        page:
          type: integer
          description: Current page number, 0-indexed
          format: int32
        periods:
          type: array
          items:
            $ref: '#/components/schemas/VerificationPeriodSummary'
        total:
          type: integer
          description: Total number of results
          format: int32
        totalPages:
          type: integer
          description: Total number of pages
          format: int32
      description: A page of verification periods
    ApiKeyVerifier:
      type: object
      properties:
        name:
          type: string
          description: The key's name, or null when it has none
          example: ci-bot
      description: An API key that verified an entity
    ErrorResponse:
      required:
      - message
      - type
      type: object
      properties:
        details:
          type: string
        errorCode:
          type: string
        gatewayHttpStatus:
          type: integer
          format: int32
        httpStatus:
          type: integer
          format: int32
        message:
          type: string
        requestId:
          type: string
        type:
          type: string
          enum:
          - INTEGRATION_MISSING
          - INTEGRATION_UNREGISTERED
          - INTEGRATION_UNSUPPORTED
          - INTEGRATION_GRAPHQL_ERROR
          - INTEGRATION_BAD_REQUEST
          - INTEGRATION_UNAUTHORIZED
          - INTEGRATION_FORBIDDEN
          - INTEGRATION_NOT_FOUND
          - INTEGRATION_UNPROCESSABLE_CONTENT
          - INTEGRATION_RATE_LIMITED
          - INTEGRATION_INTERNAL_ERROR
          - INTEGRATION_NOT_IMPLEMENTED
          - INTEGRATION_BAD_GATEWAY
          - INTEGRATION_UNAVAILABLE
          - INTEGRATION_GATEWAY_TIMEOUT
          - INTEGRATION_TIMED_OUT
          - INTEGRATION_CACHE_ERROR
          - INTEGRATION_UNHANDLED_HTTP_ERROR
          - INTEGRATION_UNHANDLED_EXCEPTION
          - INTEGRATION_UNEXPECTED_ERROR
          - ILLEGAL_ARGUMENT_ERROR
          - BAD_REQUEST
          - FORBIDDEN
          - NOT_FOUND
          - REQUEST_TIMEOUT
          - CONFLICT
          - UNHANDLED_EXCEPTION
          - UNCATEGORIZED
          - SERVICE_CREATOR
          - UNKNOWN_HOST
          - TOO_MANY_REQUESTS
    CortexUserSummary:
      required:
      - email
      - name
      type: object
      properties:
        email:
          type: string
        name:
          type: string
      description: The user who verified the entity. Null while the status is PENDING, and null when a global API key verified it.
    UpsertVerificationPeriodRequest:
      required:
      - endDate
      - name
      - requiredCustomRoleTags
      - requiredRoles
      - requiredTeamRoleTags
      - scope
      - startDate
      type: object
      properties:
        description:
          type: string
          description: What owners are being asked to confirm
        endDate:
          type: string
          description: The day the period closes, inclusive
          format: date-time
        name:
          type: string
          description: Display name
          example: Q3 Ownership Review
        reasonRequired:
          type: boolean
          description: Whether a reason is required to mark an entity incorrect. Marking an entity correct never requires one. Defaults to false.
          example: false
          default: false
        requiredCustomRoleTags:
          type: array
          description: Tags of custom Cortex roles a user must hold to verify
          items:
            type: string
            description: Tags of custom Cortex roles a user must hold to verify
        requiredRoles:
          type: array
          description: Cortex roles a user must hold to verify. Empty means any owner of the entity may verify.
          example:
          - OWNER
          items:
            type: string
            description: Cortex roles a user must hold to verify. Empty means any owner of the entity may verify.
            example: '["OWNER"]'
            enum:
            - VIEWER
            - USER
            - MANAGER
            - API
            - OWNER
        requiredTeamRoleTags:
          type: array
          description: Tags of team roles a user must hold on a team that owns the entity in order to verify
          items:
            type: string
            description: Tags of team roles a user must hold on a team that owns the entity in order to verify
        scope:
          $ref: '#/components/schemas/VerificationScope'
        startDate:
          type: string
          description: The day the period opens, inclusive
          format: date-time
      description: A verification period to create, or the full replacement state for one
    VerificationPeriodSummary:
      required:
      - cid
      - counts
      - endDate
      - isActive
      - name
      - reasonRequired
      - requiredCustomRoleTags
      - requiredRoles
      - requiredTeamRoleTags
      - scope
      - startDate
      type: object
      properties:
        cid:
          type: string
          description: Stable identifier, usable wherever a period CID is accepted
          example: vp0a1b2c3d4e5f6789
        counts:
          $ref: '#/components/schemas/VerificationCounts'
        description:
          type: string
          description: What owners are being asked to confirm
        endDate:
          type: string
          description: When the period closes
          format: date-time
        isActive:
          type: boolean
          description: Whether the period is open today, and so still accepting verifications
          example: true
        name:
          type: string
          description: Display name
          example: Q3 Ownership Review
        reasonRequired:
          type: boolean
          description: Whether a reason is required when an entity is marked incorrect
          example: false
        requiredCustomRoleTags:
          type: array
          description: Tags of custom Cortex roles a user must hold to verify
          items:
            type: string
            description: Tags of custom Cortex roles a user must hold to verify
        requiredRoles:
          type: array
          description: Cortex roles a user must hold to verify
          example:
          - OWNER
          items:
            type: string
            description: Cortex roles a user must hold to verify
            example: '["OWNER"]'
            enum:
            - VIEWER
            - USER
            - MANAGER
            - API
            - OWNER
        requiredTeamRoleTags:
          type: array
          description: Tags of team roles a user must hold on an owning team to verify
          items:
            type: string
            description: Tags of team roles a user must hold on an owning team to verify
        scope:
          $ref: '#/components/schemas/VerificationScope'
        startDate:
          type: string
          description: When the period opens
          format: date-time
      description: A verification period and how far along it is
    ListVerifications:
      required:
      - page
      - total
      - totalPages
      - verifications
      type: object
      properties:
        page:
          type: integer
          description: Current page number, 0-indexed
          format: int32
        total:
          type: integer
          description: Total number of results
          format: int32
        totalPages:
          type: integer
          description: Total number of pages
          format: int32
        verifications:
          type: array
          items:
            $ref: '#/components/schemas/EntityVerificationWithEntity'
      description: A page of verifications from across the catalog
    VerifyEntityEntry:
      required:
      - entity
      - periodCid
      - status
      type: object
      properties:
        entity:
          type: string
          description: The entity's tag or CID
          example: payments-api
        periodCid:
          type: string
          description: The CID of the verification period
          example: vp0a1b2c3d4e5f6789
        reason:
          type: string
          description: Why the entity is incorrect. Required when the period sets reasonRequired and the status is VERIFIED_INCORRECT.
          example: Ownership moved to the payments team
        status:
          type: string
          description: Whether the entity's data is correct. PENDING is not accepted.
          example: VERIFIED_CORRECT
          enum:
          - PENDING
          - VERIFIED_CORRECT
          - VERIFIED_INCORRECT
      description: One entity's answer for one verification period
    VerificationScope:
      required:
      - entityGroups
      - excludedEntityGroups
      - types
      type: object
      properties:
        cqlQuery:
          type: string
          description: Cover the entities this CQL query returns. Evaluated in the background, so a period created with one reports zero entities until that finishes.
          example: tag != null
        entityGroups:
          uniqueItems: true
          type: array
          description: Cover only entities in these entity groups. Empty means every group.
          items:
            type: string
            description: Cover only entities in these entity groups. Empty means every group.
        excludedEntityGroups:
          uniqueItems: true
          type: array
          description: Exclude entities in these entity groups
          items:
            type: string
            description: Exclude entities in these entity groups
        types:
          uniqueItems: true
          type: array
          description: Cover only entities of these types. Empty means every type.
          example:
          - service
          items:
            type: string
            description: Cover only entities of these types. Empty means every type.
            example: '["service"]'
      description: Which entities a verification period covers. An empty scope covers every entity. Combined conditions all have to hold.
    TooManyRequestsProblemDetail:
      required:
      - type
      - title
      - status
      type: object
      properties:
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        retryAfter:
          minimum: 0
          type: integer
          description: The number of seconds until the rate limiting resets.
          format: int32
        status:
          maximum: 599
          minimum: 100
          type: integer
          format: int32
          enum:
          - 429
        title:
          type: string
        type:
          type: string
          format: uri-reference
  responses:
    TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetail'
      description: The client has exceeded the rate limit by performing too many requests in a short period. Retry the request after a delay.
      headers:
        Retry-After:
          description: The number of seconds until the rate limiting resets.
          schema:
            minimum: 0
            type: integer
            format: int32
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: 'All requests to the Cortex API need to provide an `Authorization: Bearer <token>` header, where `<token>` is an API key created in the Settings page of your workspace.'
      scheme: bearer
      type: http
x-provenance:
  method: harvested
  publisher: Cortex
  source: https://docs.cortex.io/openapi/cortex_swagger.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)