> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neobank.proofof.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Card



## OpenAPI

````yaml /openapi.json post /v1/cards
openapi: 3.1.0
info:
  summary: >-
    Canonical API for customer onboarding, accounts, remittance, mandates, and
    cards.
  title: Example Neobank
  version: 0.1.0
servers: []
security: []
paths:
  /v1/cards:
    post:
      tags:
        - Cards
      summary: Create Card
      operationId: create_card_v1_cards_post
      parameters:
        - description: One-use, transaction-bound confirmation issued by this API.
          in: header
          name: Confirmation-Intent-ID
          required: true
          schema:
            description: One-use, transaction-bound confirmation issued by this API.
            maxLength: 200
            minLength: 16
            title: Confirmation-Intent-Id
            type: string
        - description: Unique key for one canonical mutation request.
          in: header
          name: Idempotency-Key
          required: true
          schema:
            description: Unique key for one canonical mutation request.
            maxLength: 200
            minLength: 16
            title: Idempotency-Key
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardCreate'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationView'
          description: Successful Response
          headers:
            Idempotent-Replayed:
              description: >-
                Sent with the literal value true only when this response replays
                a previously accepted request under the same idempotency key.
                Absent on a first acceptance; never sent as false.
              schema:
                enum:
                  - 'true'
                type: string
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Malformed or invalid request semantics
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Authentication required
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Action not permitted
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: State or idempotency conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Request validation failed
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Rate limit exceeded
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Invalid upstream response
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Provider capability unavailable
        '504':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
          description: Provider timeout
components:
  schemas:
    CardCreate:
      additionalProperties: false
      properties:
        nickname:
          anyOf:
            - maxLength: 80
              type: string
            - type: 'null'
          title: Nickname
      title: CardCreate
      type: object
    OperationView:
      additionalProperties: false
      properties:
        action_required:
          anyOf:
            - $ref: '#/components/schemas/RedirectAction'
            - type: 'null'
        created_at:
          format: date-time
          title: Created At
          type: string
        failure_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Failure Code
        failure_detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Failure Detail
        id:
          title: Id
          type: string
        kind:
          enum:
            - beneficiary_create
            - card_close
            - card_create
            - card_freeze
            - card_unfreeze
            - mandate_create
            - mandate_revoke
            - mandate_suspend
            - mandate_transfer
            - transfer
            - transfer_grant_revoke
          title: Kind
          type: string
        next_reconcile_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Next Reconcile At
        resource_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Resource Id
        resource_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Resource Type
        state:
          enum:
            - requires_action
            - accepted
            - submitting
            - submitted
            - succeeded
            - failed
            - indeterminate
            - cancelled
          title: State
          type: string
        submission_uncertain:
          title: Submission Uncertain
          type: boolean
        updated_at:
          format: date-time
          title: Updated At
          type: string
        upstream_reference:
          anyOf:
            - type: string
            - type: 'null'
          title: Upstream Reference
      required:
        - id
        - kind
        - state
        - resource_type
        - resource_id
        - next_reconcile_at
        - created_at
        - updated_at
        - upstream_reference
        - failure_code
        - failure_detail
        - submission_uncertain
      title: OperationView
      type: object
    ProblemDetails:
      additionalProperties: false
      properties:
        code:
          title: Code
          type: string
        detail:
          title: Detail
          type: string
        fields:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Fields
        instance:
          title: Instance
          type: string
        refresh_onboarding:
          title: Refresh Onboarding
          type: boolean
        request_id:
          title: Request Id
          type: string
        retryable:
          title: Retryable
          type: boolean
        status:
          title: Status
          type: integer
        submission_uncertain:
          title: Submission Uncertain
          type: boolean
        title:
          title: Title
          type: string
        type:
          title: Type
          type: string
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - request_id
        - retryable
        - submission_uncertain
        - refresh_onboarding
      title: ProblemDetails
      type: object
    RedirectAction:
      additionalProperties: false
      description: >-
        A hosted provider hand-off: open url, optionally before expires_at,

        optionally polling for the outcome after poll_after_ms milliseconds.


        card_reveal, grant_approval, and connect actions always carry
        expires_at,

        and grant_approval actions a positive poll_after_ms; a null expires_at

        occurs only on kyc_session, and a null poll_after_ms means no polling

        applies.
      properties:
        expires_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          title: Expires At
        kind:
          enum:
            - kyc_session
            - card_reveal
            - grant_approval
            - connect
          title: Kind
          type: string
        poll_after_ms:
          anyOf:
            - exclusiveMinimum: 0
              type: integer
            - type: 'null'
          title: Poll After Ms
        url:
          title: Url
          type: string
      required:
        - kind
        - url
        - expires_at
        - poll_after_ms
      title: RedirectAction
      type: object

````