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

# Confirm a file upload



## OpenAPI

````yaml /openapi.yaml post /v1/files/{id}/upload/completion
openapi: 3.1.0
info:
  title: VTurb API
  version: v1
  description: |
    Public REST API for VTurb. Dev-first and agents-first: every documented
    response is recorded from the API's real behavior.
  contact:
    name: VTurb API
    url: https://vturb.com
servers:
  - url: https://api.vturb.com
security:
  - bearerAuth: []
paths:
  /v1/files/{id}/upload/completion:
    post:
      tags:
        - Files
      summary: Confirm a file upload
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: 0190a0b0-0000-7000-8000-000000000001
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
            example: {}
      responses:
        '200':
          description: The upload is confirmed and the file becomes active.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                    enum:
                      - awaiting_upload
                      - active
                  url:
                    type: string
                required:
                  - id
                  - status
                  - url
              example:
                id: 0190a0b0-0000-7000-8000-000000000001
                status: active
                url: >-
                  https://static.vturb.com/assets/org_123/2026/08/12/0190a0b0-0000-7000-8000-000000000001/original.jpg
        '401':
          description: Missing API credential.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/unauthorized
                code: unauthorized
                message: >-
                  Missing or invalid API credential. Send a vt_ token in the
                  Authorization header.
                request_id: 00000000-0000-0000-0000-000000000000
        '404':
          description: No file matches that id for the authenticated caller.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/not_found
                code: not_found
                message: Resource not found.
                request_id: 00000000-0000-0000-0000-000000000000
        '415':
          description: The uploaded file is not an allowed type.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/unsupported_media_type
                code: unsupported_media_type
                message: >-
                  The file type is not supported. Allowed: PNG, JPEG, GIF, WebP,
                  WebVTT.
                request_id: 00000000-0000-0000-0000-000000000000
        '422':
          description: The upload was confirmed before the bytes landed.
          content:
            application/problem+json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  request_id:
                    type: string
                required:
                  - type
                  - code
                  - message
                  - request_id
              example:
                type: https://docs.vturb.com/errors/upload_incomplete
                code: upload_incomplete
                message: >-
                  The upload has not been received. Upload every part before
                  confirming.
                request_id: 00000000-0000-0000-0000-000000000000
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Paste your VTurb API token (vt_...). Sent as `Authorization: Bearer
        <token>`.

````