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

> ## Agent Instructions
> If you are an AI assistant operating Infinite for a user, read the skill first: https://docs.infinite.dev/agent-skill.md (setup per host, tool reference, rules for moving money, journeys).
> When operating Infinite for a user, use the MCP server. Sign in at https://bot.api.infinite.dev/mcp (production, acts as the user) or send `Authorization: Bearer <key>` to https://bot.api.infinite.dev/mcp/sse. Prefer its tools over raw HTTP; use REST only for steps no tool covers, and check `get_endpoint_schema` before guessing a request shape.
> Net-new Infinite Connect (org_connect) is operator-assisted: do not grant end users shared org_connect Auth Kit membership or the shared platform org API key — those credentials are org-wide on /v1. BYO org keys onboard under that customer's org id. Operator sessions should show org_connect in get_organization_info.
> The key decides the tools. Every organization key (`sk_sandbox_…` / `sk_live_…`) gets docs, onboarding, `get_account_balance`, and request logs for your own organization. BYO organizations add payees an agent will pay with `create_payee` (payable once ACTIVE). Platform Connect sessions instead get bound-customer payment lookups (`get_quote`, `get_transfer`, `list_transfers`, `list_account_balances`), payee drafts (`create_payee_draft` / `get_payee_draft`; screening only, never payable), and transfer drafts that wait for Infinite approval (`create_transfer_draft` / `get_transfer_draft`; never POST /v1/transfers). Where offered, platform `create_transfer` files a real transfer that Infinite holds in review before funding; it cannot be submitted from DRAFT.
> An agent key (`sk_sandbox_agent_…` / `sk_live_agent_…`) moves money within that agent's limits: `create_transfer` → `submit_transfer` → `wait_for_transfer`.
> On sandbox organization-key sessions, `sandbox_approve_customer` (makes the capabilities you pass READY, and related ones may turn READY too; `request_capabilities` is not needed), `sandbox_fund_account`, and `sandbox_complete_transfer` stand in for verification, funding, and settlement, so a whole flow runs from MCP. BYO keys can pass `customerId` on each call without binding; platform sessions must bind a customer first (`create_business_customer` auto-binds, or send `X-Infinite-On-Behalf-Of`).
> When searching documentation without a key, use the docs MCP at https://docs.infinite.dev/mcp.
> Start in sandbox (https://sandbox.api.infinite.dev). Do not use production unless the user explicitly asks.
> Confirm amount, currency, and payee with the user before any payment is submitted. Pass the invoice number as `reference` on `create_transfer`; the summary says what the payee will see.
> REST amounts are integer minor units (`"4000"` = 40.00 USD). MCP payment tools take exact decimal strings (`"40.00"`). Never mix them.
> Agent denials return `403 { denial: { code, message, window, limit, used, remaining, attemptedAmount, currency }, hint }` with decimal amounts; per-transfer denials omit `used` and `remaining`. Report them to the user; do not work around them.

# Get session configuration



## OpenAPI

````yaml get /v1/verification/sessions/{sessionId}/config
openapi: 3.0.0
info:
  title: Infinite API
  description: API for Infinite
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox.api.infinite.dev
    description: Sandbox
  - url: https://api.infinite.dev
    description: Production
security: []
tags:
  - name: Accounts
    description: Virtual and external account management
  - name: Customers
    description: Customer identity management
  - name: Documents
    description: Document upload and management
  - name: Fixed Routes
    description: Fixed route management
  - name: External Bank Accounts
    description: External bank account management
  - name: External Wallets
    description: External wallet management
  - name: Infinite Wallets
    description: Infinite Wallet management
  - name: Organizations
    description: Organization management
  - name: Quotes
    description: Quote creation and management
  - name: Transfers
    description: Money movement and transaction tracking
  - name: Verification
    description: Identity verification workflows
  - name: Terms of Service
    description: Terms of Service acceptance
  - name: Health
    description: System health and monitoring
  - name: Sandbox
    description: Sandbox utilities
paths:
  /v1/verification/sessions/{sessionId}/config:
    get:
      tags:
        - Verification
      summary: Get session configuration
      operationId: VerificationController_getSessionConfig_v1
      parameters:
        - name: sessionId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Session configuration with document requirements
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionConfigResponse'
      x-codeSamples:
        - lang: bash
          label: CLI
          source: >-
            # Requires: npm i -g @infinite_dev/cli && export
            INFINITE_API_KEY=sk_sandbox_...

            # Escape hatch for any endpoint: infinite api <METHOD> <path>

            infinite api GET /v1/verification/sessions/<sessionId>/config
        - lang: text
          label: MCP
          source: Get session configuration (<sessionId>).
components:
  schemas:
    SessionConfigResponse:
      type: object
      properties:
        id:
          type: string
        organizationId:
          type: string
        organization:
          $ref: '#/components/schemas/OrganizationInfo'
        customerId:
          type: string
          nullable: true
        associatedEntityId:
          type: string
          description: Associated entity ID. Present when this is a UBO KYC session.
          example: asp_abc123
        customerName:
          type: string
          description: Customer/business name. Present when this is a UBO KYC session.
          example: Acme Corporation
        verificationSubtype:
          type: string
        countryCode:
          type: string
        email:
          type: string
        name:
          type: string
        status:
          type: string
        expiresAt:
          type: string
        completedAt:
          type: string
          nullable: true
        submittedAt:
          type: string
          nullable: true
        completedSteps:
          type: array
          items:
            type: string
        requiredSteps:
          type: array
          items:
            type: string
        requiredFields:
          type: array
          items:
            $ref: '#/components/schemas/RequiredField'
        requiredDocuments:
          type: array
          items:
            $ref: '#/components/schemas/RequiredDocument'
        enhancedDiligence:
          $ref: '#/components/schemas/EnhancedDiligenceRequirements'
        documentRequirements:
          $ref: '#/components/schemas/StepDocumentRequirements'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/EnhancedVerificationStep'
        estimatedCompletionTimeMinutes:
          type: number
          nullable: true
        collectedData:
          type: object
          additionalProperties: true
        providerData:
          type: object
          nullable: true
          additionalProperties: true
        providerSessionId:
          type: string
          nullable: true
        verificationUrl:
          type: string
          nullable: true
        metadata:
          type: object
          additionalProperties: true
        fillOnBehalf:
          type: boolean
        createdAt:
          type: string
        updatedAt:
          type: string
        featureFlags:
          description: Feature flags enabled for the organization
          example:
            - socuredocv
            - advanced-reporting
          type: array
          items:
            type: string
        deviceRiskSessionKey:
          type: string
          nullable: true
          description: >-
            Server-generated session key for device-intelligence collection on
            the hosted verification UI. Absent when the integration is not
            configured.
        bankPartnerAgreementsRequired:
          type: boolean
          description: Whether additional banking agreements must be accepted
      required:
        - id
        - organizationId
        - organization
        - customerId
        - verificationSubtype
        - countryCode
        - email
        - name
        - status
        - expiresAt
        - completedAt
        - submittedAt
        - completedSteps
        - requiredSteps
        - requiredFields
        - requiredDocuments
        - documentRequirements
        - steps
        - estimatedCompletionTimeMinutes
        - collectedData
        - providerData
        - providerSessionId
        - verificationUrl
        - metadata
        - fillOnBehalf
        - createdAt
        - updatedAt
        - featureFlags
        - bankPartnerAgreementsRequired
    OrganizationInfo:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        name:
          type: string
        parentOrganizationId:
          type: string
          nullable: true
        logoUrl:
          type: string
          nullable: true
        metadata:
          type: object
          additionalProperties: true
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - id
        - slug
        - name
        - parentOrganizationId
        - logoUrl
        - metadata
        - createdAt
        - updatedAt
    RequiredField:
      type: object
      properties:
        fieldPath:
          type: string
        displayName:
          type: string
        dataType:
          type: string
        required:
          type: boolean
        validationPattern:
          type: string
          nullable: true
        validationMessage:
          type: string
          nullable: true
        allowedValues:
          nullable: true
          type: array
          items:
            type: string
        exampleValue:
          type: string
          nullable: true
        uiTag:
          type: string
          nullable: true
        infoBox:
          type: string
          nullable: true
        link:
          type: string
          nullable: true
          description: >-
            Website URL the responder should open. Link requests do not collect
            an answer.
        options:
          nullable: true
          type: array
          items:
            type: string
        isMultiSelect:
          type: boolean
          nullable: true
        stepId:
          type: string
          nullable: true
        position:
          type: number
          nullable: true
          description: Display order within the request. Lower numbers appear first.
        subject:
          type: string
          nullable: true
        entityScope:
          type: string
          nullable: true
          description: Stable customer or associated-entity ID targeted by this field
        countryCode:
          type: string
          nullable: true
          description: Country code used for country-specific input validation
        allowNoTinPlaceholder:
          type: boolean
          description: >-
            Whether an all-zeros placeholder satisfies this tax ID field
            (nationals or residents of countries that do not issue TINs)
        sourcePackage:
          type: string
          nullable: true
        dependsOn:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/FieldDependency'
        minLength:
          type: number
          nullable: true
        maxLength:
          type: number
          nullable: true
      required:
        - fieldPath
        - displayName
        - dataType
        - required
        - validationPattern
        - validationMessage
        - allowedValues
        - exampleValue
        - uiTag
        - infoBox
        - options
        - isMultiSelect
        - stepId
        - dependsOn
        - minLength
        - maxLength
    RequiredDocument:
      type: object
      properties:
        requirementId:
          type: string
          nullable: true
          description: Stable identifier that distinguishes custom document requirements
        documentType:
          type: string
          enum:
            - IDENTITY
            - LIVENESS_CHECK
            - PROOF_OF_ADDRESS
            - INVOICE
            - CONTRACT
            - BANK_STATEMENT
            - BUSINESS_LICENSE
            - ARTICLES_OF_INCORPORATION
            - ARTICLES_OF_ASSOCIATION
            - CERTIFICATE_OF_FORMATION
            - CERTIFICATE_OF_INCUMBENCY
            - OPERATING_AGREEMENT
            - PARTNERSHIP_AGREEMENT
            - OWNERSHIP_STRUCTURE
            - SHAREHOLDER_AGREEMENT
            - STOCK_CERTIFICATE
            - TAX_RETURN
            - FINANCIAL_STATEMENT
            - MARKETING_MATERIALS
            - DOMAIN_OWNERSHIP_PROOF
            - BUSINESS_PLAN
            - BILL_OF_LADING
            - AML_POLICY
            - AML_COMFORT_LETTER
            - FUNDS_FLOW_DIAGRAM
            - GOOD_STANDING_CERTIFICATE
            - TIN_VERIFICATION
            - MSB_LICENSE
            - DIRECTORS_REGISTRY
            - OWNERSHIP_CHART
            - PROOF_OF_SIGNATORY_AUTHORITY
            - PROOF_OF_SOURCE_OF_FUNDS
            - PROOF_OF_ENTITY_NAME_CHANGE
            - REMOTE_ADDRESS_ATTESTATION
            - E_SIGNATURE_CERTIFICATE
            - COMPLIANCE_NOTES
            - PROOF_OF_SOURCE_OF_WEALTH
            - TAX_EXEMPT_ENTITY_CONFIRMATION
            - OTHER
        documentSubtype:
          type: string
          enum:
            - GOVERNMENT_ID_FRONT
            - GOVERNMENT_ID_BACK
            - SELFIE
            - UTILITY_BILL
            - LEASE_AGREEMENT
          nullable: true
        displayName:
          type: string
        required:
          type: boolean
        acceptedFormats:
          type: array
          items:
            type: string
        requiredSides:
          type: array
          items:
            type: string
        maxSizeBytes:
          type: number
        infoBox:
          type: string
          nullable: true
        stepId:
          type: string
        position:
          type: number
          nullable: true
          description: Display order within the request. Lower numbers appear first.
        subject:
          type: string
          nullable: true
        entityScope:
          type: string
          nullable: true
        documentFieldPath:
          type: string
          nullable: true
          description: >-
            Verification field path for document ID writeback (e.g.
            businessData.associatedEntities[0].governmentId.frontImage)
        minimumFileCount:
          type: number
          nullable: true
        sourcePackage:
          type: string
          nullable: true
        dependsOn:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/FieldDependency'
      required:
        - documentType
        - displayName
        - required
        - acceptedFormats
        - requiredSides
        - maxSizeBytes
        - infoBox
        - stepId
    EnhancedDiligenceRequirements:
      type: object
      properties:
        requiredFields:
          type: array
          items:
            $ref: '#/components/schemas/RequiredField'
        requiredDocuments:
          type: array
          items:
            $ref: '#/components/schemas/RequiredDocument'
      required:
        - requiredFields
        - requiredDocuments
    StepDocumentRequirements:
      type: object
      properties:
        requiredDocuments:
          type: array
          items:
            $ref: '#/components/schemas/RequiredDocument'
      required:
        - requiredDocuments
    EnhancedVerificationStep:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        subtitle:
          type: string
          nullable: true
        order:
          type: number
        requiredFields:
          nullable: true
          type: array
          items:
            type: string
        requiredDocuments:
          nullable: true
          type: array
          items:
            type: string
        documentRequirements:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/StepDocumentRequirements'
      required:
        - id
        - title
        - subtitle
        - order
        - requiredFields
        - requiredDocuments
        - documentRequirements
    FieldDependency:
      type: object
      properties:
        fieldPath:
          type: string
        value:
          nullable: true
          oneOf:
            - type: boolean
            - type: string
            - type: number
            - type: array
              items:
                type: string
        hasValue:
          type: boolean
          nullable: true
      required:
        - fieldPath
        - value
        - hasValue

````

## Related topics

- [Get configuration for current organization](/api-reference/organizations/get-configuration-for-current-organization.md)
- [Update configuration for current organization](/api-reference/organizations/update-configuration-for-current-organization.md)
- [Get customer verification status](/api-reference/verification/get-customer-verification-status.md)
- [Get customer by ID](/api-reference/customers/get-customer-by-id.md)
- [Infinite skill for AI assistants](/agent-skill.md)
