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

# Parse a document

> Parse one uploaded document on the server. API-key and cli:inference OAuth callers send only the multipart file field, with no model, trust tier, or parse mode. Returns parsed text, document_type and token_count. Token count is a model-independent UTF-8 byte estimate, not model-specific usage. Billing and spending caps are enforced before processing; one document-parse unit is charged. Content is not persisted; responses are no-store.

See the [guide](/api/api-reference/server-tools/file-parser) for authentication, examples, and usage rules.


## OpenAPI

````yaml openapi.json POST /api/v1/attachments/parse
openapi: 3.1.0
info:
  contact:
    email: developers@trynito.ai
    name: Nito Developer Support
    url: https://docs.trynito.ai/support
  description: >-
    Nito developer API: inference, Fusion, model catalog, attestation, web
    retrieval, document parsing, API key management, balance, rate-limit
    snapshots, and MCP.
  termsOfService: https://trynito.ai/terms
  title: Nito API
  version: '2026-07-01'
servers:
  - description: Configured gateway
    url: https://app.trynito.ai
security: []
tags:
  - description: >-
      OpenAI Chat Completions-compatible inference routes backed by gateway
      routing, billing, privacy, and streaming controls.
    name: Chat
  - description: >-
      Stateless OpenAI Responses-compatible shims for agent clients, including
      the compact output-item endpoint used by standalone compaction flows.
    name: Responses
  - description: >-
      Anthropic Messages-compatible request, response, token-count, and
      streaming surfaces mapped into canonical gateway contracts.
    name: Messages
  - description: >-
      Model discovery and browser model-picker metadata for safe logical model
      selection.
    name: Models
  - description: >-
      Request-local Attestation metadata for supported Attestable models in the
      Confidential and Encrypted tiers.
    name: Attestation
  - description: >-
      Streamable HTTP MCP transport documented with resource-bound bearer-token
      authentication.
    name: MCP
  - description: >-
      Standalone, credential-authenticated web search and fetch without an
      inference model.
    name: Web
  - description: >-
      OAuth-authorized organization API key administration with explicit consent
      and current owner/admin authorization.
    name: API Keys
  - description: >-
      Browser billing, usage, referral, balance, auto top-up, and x402 funding
      surfaces using integer nanos.
    name: Billing
externalDocs:
  description: Nito developer documentation
  url: https://docs.trynito.ai/nito
paths:
  /api/v1/attachments/parse:
    post:
      tags:
        - Chat
      summary: Parse an uploaded document
      description: >-
        Parse one uploaded document on the server. API-key and cli:inference
        OAuth callers send only the multipart file field, with no model, trust
        tier, or parse mode. Returns parsed text, document_type and token_count.
        Token count is a model-independent UTF-8 byte estimate, not
        model-specific usage. Billing and spending caps are enforced before
        processing; one document-parse unit is charged. Content is not
        persisted; responses are no-store.
      operationId: parseAttachment
      requestBody:
        content:
          multipart/form-data:
            example:
              file: <binary file>
            schema:
              $ref: '#/components/schemas/AttachmentParseRequest'
        description: >-
          Request payload for `parseAttachment`. Examples use placeholder-safe
          values and do not include real secrets or private prompt content.
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                document_type: example
                text: Say hello.
                token_count: 1
              schema:
                $ref: '#/components/schemas/AttachmentParseResponse'
          description: OK
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
        '400':
          content:
            application/json:
              example:
                error:
                  code: invalid_request
                  message: The request is invalid.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Invalid request
        '401':
          content:
            application/json:
              example:
                error:
                  code: unauthorized
                  message: authentication required
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Authentication required
        '402':
          content:
            application/json:
              example:
                error:
                  code: payment_required
                  message: >-
                    billing credits or an active subscription are required for
                    this request
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Payment required
        '403':
          content:
            application/json:
              example:
                error:
                  code: forbidden
                  message: credential is not authorized for this operation
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden
        '413':
          content:
            application/json:
              example:
                error:
                  code: invalid_request
                  message: The request is invalid.
                  param: model
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Attachment parse upload too large
        '429':
          content:
            application/json:
              examples:
                insufficient_quota:
                  summary: Billing balance or free-tier quota exhausted
                  value:
                    error:
                      code: insufficient_quota
                      message: insufficient billing balance
                rate_limited:
                  summary: Gateway or provider rate limit exceeded
                  value:
                    error:
                      code: rate_limited
                      message: rate limited
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Rate limited or insufficient quota
          headers:
            Retry-After:
              description: >-
                Seconds to wait before retrying when the gateway can compute a
                retry window.
              example: '60'
              schema:
                type: string
            X-RateLimit-Limit:
              $ref: '#/components/headers/RateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/RateLimitReset'
        '500':
          content:
            application/json:
              example:
                error:
                  code: internal_error
                  message: internal error
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
        '503':
          content:
            application/json:
              example:
                error:
                  code: unavailable
                  message: service unavailable
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Service unavailable
      security:
        - PublicApiBearer: []
        - PublicApiKeyHeader: []
        - CliOAuthBearer: []
components:
  schemas:
    AttachmentParseRequest:
      additionalProperties: false
      description: >-
        Upload one file for server-side parsing using an API key or CLI OAuth
        credential. No model, trust tier, or parse mode is accepted.
      example:
        file: <binary file>
      properties:
        file:
          description: Multipart binary file upload to parse.
          example: <binary file>
          format: binary
          type: string
      required:
        - file
      type: object
    AttachmentParseResponse:
      description: >-
        Schema for `AttachmentParseResponse` values returned by or accepted by
        the Nito gateway.
      example:
        document_type: example
        text: Say hello.
        token_count: 1
      properties:
        document_type:
          description: The `document_type` field on `AttachmentParseResponse`.
          example: example
          type: string
        text:
          description: The `text` field on `AttachmentParseResponse`.
          example: Say hello.
          type: string
        token_count:
          description: >-
            Model-independent estimate: UTF-8 byte length of parsed text divided
            by four, rounded up. Not a model-specific tokenizer count or billing
            usage.
          example: 1
          minimum: 0
          type: integer
      required:
        - text
        - token_count
        - document_type
      type: object
    ErrorResponse:
      description: >-
        Schema for `ErrorResponse` values returned by or accepted by the Nito
        gateway.
      example:
        error:
          code: invalid_request
          message: The request is invalid.
          param: model
      properties:
        error:
          $ref: '#/components/schemas/Error'
          description: The `error` field on `ErrorResponse`.
          example: example
      required:
        - error
      type: object
    Error:
      description: Schema for `Error` values returned by or accepted by the Nito gateway.
      example:
        code: example
        message: example
        operation_id: 00000000-0000-4000-8000-000000000001
        param: example
      properties:
        code:
          description: The `code` field on `Error`.
          example: example
          type: string
        message:
          description: The `message` field on `Error`.
          example: example
          type: string
        operation_id:
          description: The `operation_id` field on `Error`.
          example: 00000000-0000-4000-8000-000000000001
          type: string
        param:
          description: The `param` field on `Error`.
          example: example
          type: string
      required:
        - message
        - code
      type: object
  headers:
    RateLimitLimit:
      description: Maximum requests for the controlling gateway request-rate bucket.
      schema:
        type: string
    RateLimitRemaining:
      description: >-
        Additional requests immediately available in the controlling gateway
        request-rate bucket.
      schema:
        type: string
    RateLimitReset:
      description: >-
        UTC Unix epoch seconds, rounded up, when the controlling gateway
        request-rate bucket is fully replenished.
      schema:
        type: string
  securitySchemes:
    PublicApiBearer:
      description: 'Org API key as Authorization: Bearer z_sk_...'
      scheme: bearer
      type: http
    PublicApiKeyHeader:
      description: Org API-key compatibility header. CLI and MCP tokens are rejected here.
      in: header
      name: X-API-Key
      type: apiKey
    CliOAuthBearer:
      description: 'OAuth CLI access token as Authorization: Bearer nito_cli_...'
      scheme: bearer
      type: http

````

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