Persona Inquiries API

Instances of an individual verifying their identity against a template.

Documentation

Specifications

Other Resources

OpenAPI Specification

withpersona-inquiries-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Persona Accounts Inquiries API
  description: 'The Persona API is a configurable identity platform for KYC, KYB, AML, and fraud prevention. It exposes Inquiries, Inquiry Sessions, Accounts, Verifications, Reports, Cases, Transactions, Devices, Documents, Webhooks, Events, Importers, and Workflow Runs.


    All resources follow the JSON:API media type conventions: request and response payloads are wrapped in a top-level `data` object with `type`, `id`, `attributes`, and `relationships` members. Requests are authenticated with a Bearer API key. Two optional headers shape every request: `Persona-Version` pins the API version to a date (e.g. `2023-01-05`), and `Key-Inflection` selects the casing of JSON keys (`camel`, `kebab`, or `snake`). Idempotency is supported via the `Idempotency-Key` header.'
  termsOfService: https://withpersona.com/legal/terms-of-service
  contact:
    name: Persona Support
    url: https://help.withpersona.com
    email: support@withpersona.com
  version: '2023-01-05'
servers:
- url: https://api.withpersona.com/api/v1
  description: Production
security:
- bearerAuth: []
tags:
- name: Inquiries
  description: Instances of an individual verifying their identity against a template.
paths:
  /inquiries:
    get:
      operationId: listAllInquiries
      tags:
      - Inquiries
      summary: List all Inquiries
      description: Returns a paginated list of your organization's Inquiries in reverse chronological order.
      parameters:
      - $ref: '#/components/parameters/PageAfter'
      - $ref: '#/components/parameters/PageBefore'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PersonaVersion'
      - $ref: '#/components/parameters/KeyInflection'
      responses:
        '200':
          description: A list of Inquiries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryList'
    post:
      operationId: createInquiry
      tags:
      - Inquiries
      summary: Create an Inquiry
      description: Creates a new Inquiry, optionally pre-filling attributes and auto-creating an Account or Session.
      parameters:
      - $ref: '#/components/parameters/PersonaVersion'
      - $ref: '#/components/parameters/KeyInflection'
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InquiryCreateRequest'
      responses:
        '201':
          description: The created Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    get:
      operationId: retrieveInquiry
      tags:
      - Inquiries
      summary: Retrieve an Inquiry
      description: Retrieves the details of an existing Inquiry.
      parameters:
      - $ref: '#/components/parameters/PersonaVersion'
      - $ref: '#/components/parameters/KeyInflection'
      responses:
        '200':
          description: The requested Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
    patch:
      operationId: updateInquiry
      tags:
      - Inquiries
      summary: Update an Inquiry
      description: Updates fields on an existing Inquiry.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InquiryUpdateRequest'
      responses:
        '200':
          description: The updated Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/approve:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: approveInquiry
      tags:
      - Inquiries
      summary: Approve an Inquiry
      description: Approves an Inquiry that is in a completed or needs-review state.
      responses:
        '200':
          description: The approved Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/decline:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: declineInquiry
      tags:
      - Inquiries
      summary: Decline an Inquiry
      description: Declines an Inquiry.
      responses:
        '200':
          description: The declined Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/mark-for-review:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: markInquiryForReview
      tags:
      - Inquiries
      summary: Mark an Inquiry for manual review
      responses:
        '200':
          description: The Inquiry marked for review.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/expire:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: expireInquiry
      tags:
      - Inquiries
      summary: Expire an Inquiry
      responses:
        '200':
          description: The expired Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/resume:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: resumeInquiry
      tags:
      - Inquiries
      summary: Resume an Inquiry
      description: Resumes an Inquiry and returns a session token to continue the flow.
      responses:
        '200':
          description: The resumed Inquiry with a session token in meta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}/generate-one-time-link:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    post:
      operationId: generateInquiryOneTimeLink
      tags:
      - Inquiries
      summary: Generate a one-time link for an Inquiry
      responses:
        '200':
          description: The Inquiry with a one-time link in meta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
  /inquiries/{inquiry-id}:redact:
    parameters:
    - $ref: '#/components/parameters/InquiryId'
    delete:
      operationId: redactInquiry
      tags:
      - Inquiries
      summary: Redact an Inquiry
      description: Permanently redacts personally identifiable information from an Inquiry.
      responses:
        '200':
          description: The redacted Inquiry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InquiryResource'
components:
  parameters:
    InquiryId:
      name: inquiry-id
      in: path
      required: true
      description: The unique identifier of the Inquiry.
      schema:
        type: string
    PageAfter:
      name: page[after]
      in: query
      required: false
      description: Cursor for the object after which to start the page.
      schema:
        type: string
    KeyInflection:
      name: Key-Inflection
      in: header
      required: false
      description: Controls the casing of JSON keys in requests and responses.
      schema:
        type: string
        enum:
        - camel
        - kebab
        - snake
    PersonaVersion:
      name: Persona-Version
      in: header
      required: false
      description: Pins the API version to a release date, e.g. 2023-01-05.
      schema:
        type: string
        example: '2023-01-05'
    PageSize:
      name: page[size]
      in: query
      required: false
      description: Number of results per page (max 100).
      schema:
        type: integer
        default: 10
        maximum: 100
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: A unique key to safely retry a request without duplicating the operation.
      schema:
        type: string
    PageBefore:
      name: page[before]
      in: query
      required: false
      description: Cursor for the object before which to end the page.
      schema:
        type: string
  schemas:
    InquiryResourceObject:
      allOf:
      - $ref: '#/components/schemas/ResourceObject'
      - type: object
        properties:
          type:
            type: string
            example: inquiry
          attributes:
            $ref: '#/components/schemas/InquiryAttributes'
    ResourceObject:
      type: object
      description: A JSON:API resource object.
      properties:
        type:
          type: string
        id:
          type: string
        attributes:
          type: object
          additionalProperties: true
        relationships:
          type: object
          additionalProperties: true
    InquiryAttributes:
      type: object
      properties:
        status:
          type: string
          description: The current state of the Inquiry (e.g. created, pending, completed, approved, declined, expired).
          example: completed
        reference-id:
          type: string
          nullable: true
        created-at:
          type: string
          format: date-time
        completed-at:
          type: string
          format: date-time
          nullable: true
        fields:
          type: object
          additionalProperties: true
        tags:
          type: array
          items:
            type: string
    InquiryCreateRequest:
      type: object
      required:
      - data
      properties:
        data:
          type: object
          properties:
            attributes:
              type: object
              properties:
                inquiry-template-id:
                  type: string
                  description: The template that defines the verification flow.
                  example: itmpl_ABC123
                reference-id:
                  type: string
                fields:
                  type: object
                  additionalProperties: true
                tags:
                  type: array
                  items:
                    type: string
        meta:
          type: object
          properties:
            auto-create-account:
              type: boolean
            auto-create-inquiry-session:
              type: boolean
    InquiryUpdateRequest:
      type: object
      required:
      - data
      properties:
        data:
          type: object
          properties:
            attributes:
              type: object
              properties:
                fields:
                  type: object
                  additionalProperties: true
                note:
                  type: string
    InquiryResource:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/InquiryResourceObject'
        included:
          type: array
          items:
            $ref: '#/components/schemas/ResourceObject'
        meta:
          type: object
          additionalProperties: true
    InquiryList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/InquiryResourceObject'
        links:
          type: object
          properties:
            prev:
              type: string
              nullable: true
            next:
              type: string
              nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Persona API key passed as a Bearer token in the Authorization header.