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

# Get Terms and Acceptance

> Read the current immutable terms and this end user's receipt state

> [!NOTE]
>
> Available in the Platform production API from October 22, 2026, including
> migration 119. Mobile distribution and genuine customer acceptance evidence
> remain separate from API availability.

Read the current document and this EndUser's current-version acceptance and
presentation receipts. GET writes neither receipt. Every response uses
`Cache-Control: no-store`.

Use a secret project key, a restricted key with `end_users:read`, or an
end-user token for its own exact `id`.
The authenticated project and active EndUser must match. Device, upload and
completion credentials cannot use these operations. Keep project keys on your
trusted backend and resolve the EndUser from your authenticated user's mapping.

## Review flow

1. Display the returned exact `content_text` for its `version` and
   `content_sha256`. Do not substitute a mutable website page or an older cache.
2. Only after the document or notice is visibly rendered, record an
   [in-app presentation](/api-reference/end-users/terms-notice.md).
3. Offer an explicit Accept action. Submit an
   [acceptance](/api-reference/end-users/terms-acceptance.md) only after that action,
   using the displayed version and hash.

`acceptance_required: true` means this EndUser has no receipt for the current
version. The initial reminder is non-blocking: reading, login, dismissal and
continued use do not accept the terms. Preserve navigation, export,
cancellation, privacy requests, support and logout.

The current revision is `2026-10-14`. Its public last-updated date does not
establish a historical legal effective date, so `effective_at` is currently
`null`. A personal receipt grants neither organizational signing authority
nor consent from recorded participants. No new data use is activated by this
release. See [terms receipts](/concepts.md#terms-documents-and-receipts).


## OpenAPI

````yaml GET /end-users/{id}/terms
openapi: 3.1.0
info:
  title: Bota API
  description: >-
    API for capturing, ingesting, and processing offline conversations via AI
    wearable devices
  version: 1.0.0
  contact:
    name: Bota Support
    email: support@bota.dev
servers:
  - url: https://api.bota.dev/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: End Users
    description: Manage end users (wearable device users)
  - name: Devices
    description: Register, configure, and manage devices
  - name: Recordings
    description: Create and manage audio recordings
  - name: Uploads
    description: Upload and download recording audio files
  - name: Transcriptions
    description: Create and retrieve transcriptions
  - name: Summaries
    description: Create and retrieve AI-generated summaries
  - name: Search
    description: Semantic search over transcript chunks (RAG retrieval)
  - name: AI Ask
    description: Multi-turn Q&A over recordings (single- and cross-recording)
paths:
  /end-users/{id}/terms:
    get:
      tags:
        - End Users
      summary: Read Current Terms and Own Acceptance
      description: >-
        Project-scoped active EndUser only. End-user tokens can access only
        themselves. GET records no acceptance or notice. A missing receipt is
        not consent to new processing.
      operationId: getEndUsersByIdTerms
      parameters:
        - schema:
            type: string
          required: true
          name: id
          in: path
      responses:
        '200':
          description: Current terms and own receipts
          content:
            application/json:
              schema:
                type: object
                properties:
                  document:
                    $ref: '#/components/schemas/TermsDocument'
                  acceptance_required:
                    type: boolean
                  acceptance:
                    anyOf:
                      - $ref: '#/components/schemas/TermsAcceptanceReceipt'
                      - type: 'null'
                      - type: 'null'
                  notice:
                    anyOf:
                      - $ref: '#/components/schemas/TermsPresentationReceipt'
                      - type: 'null'
                      - type: 'null'
                required:
                  - document
                  - acceptance_required
                  - acceptance
                  - notice
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '423':
          $ref: '#/components/responses/OrganizationAccessQuarantined'
components:
  schemas:
    TermsDocument:
      type: object
      properties:
        version:
          type: string
        title:
          type: string
        content_sha256:
          type: string
          pattern: ^[a-f0-9]{64}$
        content_text:
          type: string
        source_url:
          type: string
          format: uri
        effective_at:
          type:
            - string
            - 'null'
          format: date-time
      required:
        - version
        - title
        - content_sha256
        - content_text
        - source_url
        - effective_at
    TermsAcceptanceReceipt:
      type: object
      properties:
        id:
          type: string
          format: uuid
        version:
          type: string
        content_sha256:
          type: string
        subject_type:
          type: string
          enum:
            - dashboard_user
            - end_user
        subject_id:
          type: string
        project_id:
          type:
            - string
            - 'null'
        accepted_at:
          type: string
          format: date-time
        channel:
          type: string
          enum:
            - portal
            - bota_one
            - api
      required:
        - id
        - version
        - content_sha256
        - subject_type
        - subject_id
        - project_id
        - accepted_at
        - channel
    TermsPresentationReceipt:
      type: object
      properties:
        id:
          type: string
          format: uuid
        version:
          type: string
        content_sha256:
          type: string
        presented_at:
          type: string
          format: date-time
        channel:
          type: string
          enum:
            - portal
            - bota_one
            - api
      required:
        - id
        - version
        - content_sha256
        - presented_at
        - channel
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          required:
            - code
            - message
      required:
        - error
  responses:
    OrganizationAccessQuarantined:
      description: >-
        Organization access is temporarily locked while an organization deletion
        request is active. The organization owner may cancel the request through
        the dashboard during the grace period.
      headers:
        Cache-Control:
          description: Quarantine responses must not be cached.
          schema:
            type: string
            const: no-store
      content:
        application/json:
          schema:
            type: object
            additionalProperties: false
            required:
              - error
            properties:
              error:
                type: object
                additionalProperties: false
                required:
                  - code
                  - message
                properties:
                  code:
                    type: string
                    const: organization_access_quarantined
                  message:
                    type: string
                    const: Organization access is temporarily locked
                  request_id:
                    type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key (sk_live_*, sk_test_*, rk_*), device token (dtok_*), or
        command-bound reset completion credential (rct_*; exact factory-reset
        ACK only)

````

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