> ## 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.

# Initiate ToS acceptance

> Creates a ToS acceptance record with the agreement fields set to false or null. Returns an ID that must be used with the accept endpoint to complete the acceptance. This is the first step in a two-step process: first call initiate to get an ID, then call accept with that ID when the user actually accepts the agreements.



## OpenAPI

````yaml post /v1/tos
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/tos:
    post:
      tags:
        - Terms of Service
      summary: Initiate ToS acceptance
      description: >-
        Creates a ToS acceptance record with the agreement fields set to false
        or null. Returns an ID that must be used with the accept endpoint to
        complete the acceptance. This is the first step in a two-step process:
        first call initiate to get an ID, then call accept with that ID when the
        user actually accepts the agreements.
      operationId: TosController_initiate_v1
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateTosRequestDto'
      responses:
        '201':
          description: ToS acceptance initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiateTosResponseDto'
      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 POST /v1/tos \
              --body '<request-json>'
        - lang: text
          label: MCP
          source: >-
            Initiate ToS acceptance.


            # Infinite MCP is read-only for this endpoint — use a dedicated MCP
            tool when one exists, otherwise run the CLI tab.
components:
  schemas:
    InitiateTosRequestDto:
      type: object
      properties:
        customerId:
          type: string
          description: Customer ID (optional)
          example: cus_abc123
        verificationSessionId:
          type: string
          description: >-
            Verification session ID used to derive whether this acceptance is
            for a related person
          example: vsess_abc123
        organizationId:
          type: string
          description: Organization ID
          example: org_abc123
      required:
        - organizationId
    InitiateTosResponseDto:
      type: object
      properties:
        id:
          type: string
          description: ToS acceptance ID
          example: tos_abc123
      required:
        - id

````

## Related topics

- [Get ToS acceptance status](/api-reference/terms-of-service/get-tos-acceptance-status.md)
- [Generate hosted ToS acceptance link](/api-reference/terms-of-service/generate-hosted-tos-acceptance-link.md)
- [Accept Terms of Service](/api-reference/terms-of-service/accept-terms-of-service.md)
- [Get hosted ToS page context](/api-reference/terms-of-service/get-hosted-tos-page-context.md)
- [Initiate a new verification](/api-reference/verification/initiate-a-new-verification.md)
