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

# Create a verification session

> Creates a new verification session and returns a URL for the end-user to complete verification.



## OpenAPI

````yaml /openapi.json post /verifications
openapi: 3.1.0
info:
  title: API Reference
  version: 1.0.0
  description: >-
    ProofAge is an identity verification and age estimation API. Use this API to
    create verification sessions, upload media (selfies and documents), and
    receive decisions via webhooks.
servers:
  - url: https://api.proofage.net/v1
    description: API
security:
  - apiKey: []
    hmacSignature: []
paths:
  /verifications:
    post:
      tags:
        - Verification
      summary: Create a verification session
      description: >-
        Creates a new verification session and returns a URL for the end-user to
        complete verification.
      operationId: createVerification
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreVerificationRequest'
      responses:
        '201':
          description: >-
            The verification session, with the url the person opens to complete
            it.
          content:
            application/json:
              schema:
                type: object
                examples:
                  - id: 550e8400-e29b-41d4-a716-446655440000
                    external_id: user-123
                    external_metadata:
                      plan: premium
                    redirect_url: https://example.com/callback
                    status: created
                    reason: null
                    duplicate_check:
                      checked: false
                      duplicate_count: 0
                      duplicates: []
                    erasure: null
                    consent_accepted_at: null
                    created_at: '2026-03-19T12:00:00+00:00'
                    updated_at: '2026-03-19T12:00:00+00:00'
                    url: https://idv.proofage.net/v/eyJ...
                properties:
                  id:
                    type: string
                  external_id:
                    type:
                      - string
                      - 'null'
                  external_metadata:
                    type:
                      - object
                      - 'null'
                    additionalProperties: {}
                  redirect_url:
                    type:
                      - string
                      - 'null'
                  status:
                    type: string
                  reason:
                    type:
                      - string
                      - 'null'
                  duplicate_check:
                    type: object
                    properties:
                      checked:
                        type: boolean
                      duplicate_count:
                        type: integer
                      duplicates:
                        type: array
                        items:
                          type: object
                          properties:
                            verification_id:
                              type: string
                            external_id:
                              type:
                                - string
                                - 'null'
                            similarity_score:
                              type: number
                            verified_at:
                              type:
                                - string
                                - 'null'
                          required:
                            - verification_id
                            - external_id
                            - similarity_score
                            - verified_at
                    required:
                      - checked
                      - duplicate_count
                      - duplicates
                  erasure:
                    type:
                      - object
                      - 'null'
                    properties:
                      erased_at:
                        type: string
                      scope:
                        type: string
                      reason:
                        type:
                          - string
                          - 'null'
                      requested_via:
                        type:
                          - string
                          - 'null'
                    required:
                      - erased_at
                      - scope
                      - reason
                      - requested_via
                  consent_accepted_at:
                    type:
                      - string
                      - 'null'
                  created_at:
                    type: string
                  updated_at:
                    type: string
                  url:
                    type: string
                required:
                  - id
                  - external_id
                  - external_metadata
                  - redirect_url
                  - status
                  - reason
                  - duplicate_check
                  - erasure
                  - consent_accepted_at
                  - created_at
                  - updated_at
                  - url
        '402':
          description: A live workspace has no payment method.
          content:
            application/json:
              schema:
                type: object
                examples:
                  - code: PAYMENT_METHOD_REQUIRED
                    message: A payment method is required to create verifications.
                    free_verifications_remaining: 0
                    trial_ends_at: '2026-04-03T12:00:00+00:00'
                    trial_active: false
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  free_verifications_remaining:
                    type: integer
                  trial_ends_at:
                    type:
                      - string
                      - 'null'
                  trial_active:
                    type: boolean
                required:
                  - code
                  - message
                  - free_verifications_remaining
                  - trial_ends_at
                  - trial_active
        '422':
          $ref: '#/components/responses/ValidationException'
components:
  schemas:
    StoreVerificationRequest:
      type: object
      properties:
        callback_url:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            Where the person's browser is sent after the final screen, an http
            or https URL. Ignored unless the request is HMAC-signed.
          maxLength: 2048
        external_id:
          type:
            - string
            - 'null'
          description: >-
            Your identifier for the person. Ignored unless the request is
            HMAC-signed: the public key alone cannot tie a session to your user.
          maxLength: 255
        external_metadata:
          type:
            - object
            - 'null'
          description: >-
            Free-form data returned in the API and webhooks. Accepted without a
            signature, so treat it as client-supplied.
          additionalProperties: {}
        metadata:
          type:
            - object
            - 'null'
          description: Free-form data kept on the session and not returned to integrations.
          additionalProperties: {}
      title: StoreVerificationRequest
  responses:
    ValidationException:
      description: Validation error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                description: Errors overview.
              errors:
                type: object
                description: A detailed description of each field that failed validation.
                additionalProperties:
                  type: array
                  items:
                    type: string
            required:
              - message
              - errors
  securitySchemes:
    apiKey:
      type: apiKey
      description: Your workspace public key (pk_test_… or pk_live_…).
      in: header
      name: X-API-Key
    hmacSignature:
      type: apiKey
      description: >-
        HMAC-SHA256 of the request, hex-encoded, keyed with the workspace secret
        key. See API authentication.
      in: header
      name: X-HMAC-Signature

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.