Natural AI Agent Keys API

Agent key management

OpenAPI Specification

natural-ai-agent-keys-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Natural Agent Keys API
  version: 0.2.0
  description: 'Natural''s payments API for autonomous agents.


    **Base URL:** `https://api.natural.com`


    AI agents, including coding agents, should prefer the hosted MCP server at `https://mcp.natural.com` when an MCP-aware host runs the agent, the Natural CLI for terminal/CI workflows, and the official SDKs for application runtimes they own. Use direct HTTP only for explicit low-level integrations, unsupported SDK gaps, or infrastructure work where REST is required.


    For support: support@natural.com'
servers:
- url: https://api.natural.com
  description: Production
tags:
- name: Agent Keys
  description: Agent key management
paths:
  /agent-keys:
    get:
      operationId: agentKeys.list
      summary: List agent keys
      description: List agent keys
      tags:
      - Agent Keys
      parameters:
      - name: agentId
        in: query
        schema:
          type: string
          pattern: ^agt_[0-9a-f]{32}$
          description: Filter to keys bound to this agent (agt_*).
        allowEmptyValue: true
        allowReserved: true
      - name: cursor
        in: query
        schema:
          type: string
          maxLength: 1024
          description: Cursor from the previous page.
        allowEmptyValue: true
        allowReserved: true
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
          description: Maximum results per page.
        allowEmptyValue: true
        allowReserved: true
      - name: X-Agent-ID
        in: header
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 36
            pattern: ^agt_[0-9a-f]{32}$
          - type: 'null'
        description: Agent (agt_*) to attribute this request to when authenticating with a party API key; omit for agent keys and agent-scoped OAuth grants, which already carry agent identity.
      - name: X-Instance-ID
        in: header
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 1024
          - type: 'null'
        description: Caller-chosen identifier for the agent run, session, or conversation, required when an agent moves money.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          enum:
                          - agentKey
                        id:
                          type: string
                          description: Agent key ID (agk_*).
                        attributes:
                          type: object
                          properties:
                            agentKeyPrefix:
                              type: string
                              description: Non-secret prefix of the agent key, e.g. `ak_ntl_prod_abc123`.
                            status:
                              enum:
                              - ACTIVE
                              - REVOKED
                              type: string
                              description: Status (ACTIVE or REVOKED).
                            createdAt:
                              type: string
                              format: date-time
                              description: When this key was created.
                            lastUsedAt:
                              anyOf:
                              - type: string
                                format: date-time
                              - type: 'null'
                              description: When this key was last used.
                            revokedAt:
                              anyOf:
                              - type: string
                                format: date-time
                              - type: 'null'
                              description: When this key was revoked.
                            createdBy:
                              anyOf:
                              - type: string
                              - type: 'null'
                              description: User who created this key (usr_*).
                            revokedBy:
                              anyOf:
                              - type: string
                              - type: 'null'
                              description: User who revoked this key (usr_*).
                            expiresAt:
                              anyOf:
                              - type: string
                                format: date-time
                              - type: 'null'
                              description: When this key stops authenticating, or null if it has no scheduled expiration.
                          required:
                          - agentKeyPrefix
                          - status
                          - createdAt
                          - lastUsedAt
                          - revokedAt
                          - createdBy
                          - revokedBy
                          - expiresAt
                          additionalProperties: false
                          title: AgentKeyAttributes
                        relationships:
                          type: object
                          properties:
                            party:
                              type: object
                              properties:
                                data:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                      - party
                                    id:
                                      type: string
                                  required:
                                  - type
                                  - id
                                  additionalProperties: false
                                  title: ResourceIdentifier
                                  description: Related resource identifier.
                              required:
                              - data
                              additionalProperties: false
                              title: ToOneRelationship
                              description: Party that owns the agent key.
                            agent:
                              type: object
                              properties:
                                data:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                      - agent
                                    id:
                                      type: string
                                  required:
                                  - type
                                  - id
                                  additionalProperties: false
                                  title: ResourceIdentifier
                                  description: Related resource identifier.
                              required:
                              - data
                              additionalProperties: false
                              title: ToOneRelationship
                              description: Agent this key is bound to.
                          required:
                          - party
                          - agent
                          additionalProperties: false
                          title: AgentKeyRelationships
                      required:
                      - type
                      - id
                      - attributes
                      - relationships
                      additionalProperties: false
                      title: AgentKeyResource
                  meta:
                    type: object
                    properties:
                      pagination:
                        type: object
                        properties:
                          hasMore:
                            type: boolean
                            description: Whether more results are available.
                          nextCursor:
                            anyOf:
                            - type: string
                            - type: 'null'
                            description: Cursor for the next page, or null when there are no more results.
                        required:
                        - hasMore
                        - nextCursor
                        additionalProperties: false
                        title: PaginationMeta
                    required:
                    - pagination
                    additionalProperties: false
                required:
                - data
                - meta
                additionalProperties: false
                title: AgentKeyListResponse
              examples:
                default:
                  summary: Default
                  value:
                    data:
                    - type: agentKey
                      id: agk_550e8400e29b41d4a716446655440000
                      attributes:
                        agentKeyPrefix: ak_ntl_prod_sxHp_FRoRTnDEmEH
                        status: ACTIVE
                        createdAt: '2026-01-04T15:30:00Z'
                        lastUsedAt: null
                        revokedAt: null
                        createdBy: usr_550e8400e29b41d4a716446655440000
                        revokedBy: null
                        expiresAt: null
                      relationships:
                        party:
                          data:
                            type: party
                            id: pty_7c9e6679e29b41d4a716446655440001
                        agent:
                          data:
                            type: agent
                            id: agt_019cd1798d637a4da75dce386343931d
                    - type: agentKey
                      id: agk_7f8e4d0012a64ef3bca4d21e44a5c001
                      attributes:
                        agentKeyPrefix: ak_ntl_prod_Ab12Cd34Ef56Gh78
                        status: ACTIVE
                        createdAt: '2026-01-05T09:00:00Z'
                        lastUsedAt: null
                        revokedAt: null
                        createdBy: usr_550e8400e29b41d4a716446655440000
                        revokedBy: null
                        expiresAt: null
                      relationships:
                        party:
                          data:
                            type: party
                            id: pty_7c9e6679e29b41d4a716446655440001
                        agent:
                          data:
                            type: agent
                            id: agt_019cd1798d637a4da75dce386343931d
                    meta:
                      pagination:
                        hasMore: false
                        nextCursor: null
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed per window.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests remaining in current window.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix timestamp when rate limit resets.
              schema:
                type: integer
        '400':
          description: Validation Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          description: Stable lower-snake-case public error code.
                        detail:
                          type: string
                          description: Safe user-facing error detail.
                        status:
                          type: string
                          description: HTTP status code as a string.
                        source:
                          type: object
                          description: Location of the invalid request value.
                          properties:
                            pointer:
                              type: string
                              description: JSON Pointer to the invalid request value.
                            parameter:
                              type: string
                              description: Name of the invalid query parameter.
                            header:
                              type: string
                              description: Name of the invalid request header.
                          additionalProperties: false
                        meta:
                          type: object
                          description: Additional error context, including support and provider details when available.
                          properties:
                            supportId:
                              type: string
                              description: Request/support ID for troubleshooting.
                            connectionStatus:
                              type: string
                              enum:
                              - login_required
                              - disconnected
                              description: External account connection state when the error is repairable by relinking.
                            provider:
                              type: object
                              description: Provider error details, when available.
                              properties:
                                name:
                                  type: string
                                  enum:
                                  - plaid
                                  description: Provider that returned the underlying error.
                                errorCode:
                                  type: string
                                  description: Provider error code, when available.
                                errorType:
                                  type: string
                                  description: Provider error type, when available.
                                requestId:
                                  type: string
                                  description: Provider request ID for troubleshooting.
                              required:
                              - name
                              additionalProperties: false
                          required:
                          - supportId
                          additionalProperties: false
                      required:
                      - code
                      - detail
                      - status
                      - meta
                      additionalProperties: false
                required:
                - errors
                additionalProperties: false
              examples:
                default:
                  summary: Default
                  value:
                    errors:
                    - code: invalid_value
                      detail: The information you entered isn't valid. Please check it and try again.
                      status: '400'
                      meta:
                        supportId: req_a1b2c3d4e5f6
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          description: Stable lower-snake-case public error code.
                        detail:
                          type: string
                          description: Safe user-facing error detail.
                        status:
                          type: string
                          description: HTTP status code as a string.
                        source:
                          type: object
                          description: Location of the invalid request value.
                          properties:
                            pointer:
                              type: string
                              description: JSON Pointer to the invalid request value.
                            parameter:
                              type: string
                              description: Name of the invalid query parameter.
                            header:
                              type: string
                              description: Name of the invalid request header.
                          additionalProperties: false
                        meta:
                          type: object
                          description: Additional error context, including support and provider details when available.
                          properties:
                            supportId:
                              type: string
                              description: Request/support ID for troubleshooting.
                            connectionStatus:
                              type: string
                              enum:
                              - login_required
                              - disconnected
                              description: External account connection state when the error is repairable by relinking.
                            provider:
                              type: object
                              description: Provider error details, when available.
                              properties:
                                name:
                                  type: string
                                  enum:
                                  - plaid
                                  description: Provider that returned the underlying error.
                                errorCode:
                                  type: string
                                  description: Provider error code, when available.
                                errorType:
                                  type: string
                                  description: Provider error type, when available.
                                requestId:
                                  type: string
                                  description: Provider request ID for troubleshooting.
                              required:
                              - name
                              additionalProperties: false
                          required:
                          - supportId
                          additionalProperties: false
                      required:
                      - code
                      - detail
                      - status
                      - meta
                      additionalProperties: false
                required:
                - errors
                additionalProperties: false
              examples:
                default:
                  summary: Default
                  value:
                    errors:
                    - code: unauthenticated
                      detail: Authentication is required.
                      status: '401'
                      meta:
                        supportId: req_a1b2c3d4e5f6
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          description: Stable lower-snake-case public error code.
                        detail:
                          type: string
                          description: Safe user-facing error detail.
                        status:
                          type: string
                          description: HTTP status code as a string.
                        source:
                          type: object
                          description: Location of the invalid request value.
                          properties:
                            pointer:
                              type: string
                              description: JSON Pointer to the invalid request value.
                            parameter:
                              type: string
                              description: Name of the invalid query parameter.
                            header:
                              type: string
                              description: Name of the invalid request header.
                          additionalProperties: false
                        meta:
                          type: object
                          description: Additional error context, including support and provider details when available.
                          properties:
                            supportId:
                              type: string
                              description: Request/support ID for troubleshooting.
                            connectionStatus:
                              type: string
                              enum:
                              - login_required
                              - disconnected
                              description: External account connection state when the error is repairable by relinking.
                            provider:
                              type: object
                              description: Provider error details, when available.
                              properties:
                                name:
                                  type: string
                                  enum:
                                  - plaid
                                  description: Provider that returned the underlying error.
                                errorCode:
                                  type: string
                                  description: Provider error code, when available.
                                errorType:
                                  type: string
                                  description: Provider error type, when available.
                                requestId:
                                  type: string
                                  description: Provider request ID for troubleshooting.
                              required:
                              - name
                              additionalProperties: false
                          required:
                          - supportId
                          additionalProperties: false
                      required:
                      - code
                      - detail
                      - status
                      - meta
                      additionalProperties: false
                required:
                - errors
                additionalProperties: false
              examples:
                default:
                  summary: Default
                  value:
                    errors:
                    - code: forbidden
                      detail: You do not have permission to perform this action.
                      status: '403'
                      meta:
                        supportId: req_a1b2c3d4e5f6
        '404':
          description: Not Found. Returned when the resource does not exist, or when it exists but is not accessible to your account. The two cases are intentionally indistinguishable, so that resource IDs cannot be enumerated by probing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          description: Stable lower-snake-case public error code.
                        detail:
                          type: string
                          description: Safe user-facing error detail.
                        status:
                          type: string
                          description: HTTP status code as a string.
                        source:
                          type: object
                          description: Location of the invalid request value.
                          properties:
                            pointer:
                              type: string
                              description: JSON Pointer to the invalid request value.
                            parameter:
                              type: string
                              description: Name of the invalid query parameter.
                            header:
                              type: string
                              description: Name of the invalid request header.
                          additionalProperties: false
                        meta:
                          type: object
                          description: Additional error context, including support and provider details when available.
                          properties:
                            supportId:
                              type: string
                              description: Request/support ID for troubleshooting.
                            connectionStatus:
                              type: string
                              enum:
                              - login_required
                              - disconnected
                              description: External account connection state when the error is repairable by relinking.
                            provider:
                              type: object
                              description: Provider error details, when available.
                              properties:
                                name:
                                  type: string
                                  enum:
                                  - plaid
                                  description: Provider that returned the underlying error.
                                errorCode:
                                  type: string
                                  description: Provider error code, when available.
                                errorType:
                                  type: string
                                  description: Provider error type, when available.
                                requestId:
                                  type: string
                                  description: Provider request ID for troubleshooting.
                              required:
                              - name
                              additionalProperties: false
                          required:
                          - supportId
                          additionalProperties: false
                      required:
                      - code
                      - detail
                      - status
                      - meta
                      additionalProperties: false
                required:
                - errors
                additionalProperties: false
              examples:
                default:
                  summary: Default
                  value:
                    errors:
                    - code: not_found
                      detail: The requested resource was not found.
                      status: '404'
                      meta:
                        supportId: req_a1b2c3d4e5f6
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    minItems: 1
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          description: Stable lower-snake-case public error code.
                        detail:
                          type: string
                          description: Safe user-facing error detail.
                        status:
                          type: string
                          description: HTTP status code as a string.
                        source:
                          type: object
                          description: Location of the invalid request value.
                          properties:
                            pointer:
                              type: string
                              description: JSON Pointer to the invalid request value.
                            parameter:
                              type: string
                              description: Name of the invalid query parameter.
                            header:
                              type: string
                              description: Name of the invalid request header.
                          additionalProperties: false
                        meta:
                          type: object
                          description: Additional error context, including support and provider details when available.
                          properties:
                            supportId:
                              type: string
                              description: Request/support ID for troubleshooting.
                            connectionStatus:
                              type: string
                              enum:
                              - login_required
                              - disconnected
                              description: External account connection state when the error is repairable by relinking.
                            provider:
                              type: object
                              description: Provider error details, when available.
                              properties:
                                name:
                                  type: string
                                  enum:
                                  - plaid
                                  description: Provider that returned the underlying error.
                                errorCode:
                                  type: string
                                  description: Provider error code, when available.
                                errorType:
                                  type: string
                                  description: Provider error type, when available.
                                requestId:
                                  type: string
                                  description: Provider request ID for troubleshooting.
                              required:
                              - name
                              additionalProperties: false
                          required:
                          - supportId
                          additionalProperties: false
                      required:
                      - code
                      - detail
                      - status
                      - meta
                      additionalProperties: false
                required:
                - errors
                additionalProperties: false
              examples:
       

# --- truncated at 32 KB (242 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/natural-ai/refs/heads/main/openapi/natural-ai-agent-keys-api-openapi.yml