> ## 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 video upload



## OpenAPI

````yaml /openapi.yaml post /v1/videos/{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/videos/{id}/upload/completion:
    post:
      tags:
        - Videos
      summary: Confirm a video upload
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: 652f2b1e8f1b2c3d4e5f6a7b
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parts:
                  type: array
                  items:
                    type: object
                    properties:
                      part_number:
                        type: integer
                      etag:
                        type: string
                    required:
                      - part_number
                      - etag
                  description: >-
                    One entry per uploaded part, with the ETag S3 returned for
                    that part's PUT.
              required:
                - parts
            example:
              parts:
                - part_number: 1
                  etag: etag-1
                - part_number: 2
                  etag: etag-2
      responses:
        '200':
          description: >-
            The parts are assembled in S3 and the upload is confirmed; the video
            moves to processing and becomes ready once encoding finishes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                    enum:
                      - awaiting_upload
                      - processing
                      - ready
                      - expired
                required:
                  - id
                  - status
              example:
                id: 652f2b1e8f1b2c3d4e5f6a7b
                status: processing
        '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
        '403':
          description: The credential is missing the videos:upload scope.
          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/forbidden
                code: forbidden
                message: The credential is missing the scope this action requires.
                request_id: 00000000-0000-0000-0000-000000000000
        '404':
          description: No video 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
        '422':
          description: >-
            The upload was confirmed before every part was uploaded, or the
            parts don't match what S3 received.
          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
        '503':
          description: The upload could not be confirmed right now; retry shortly.
          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/service_unavailable
                code: service_unavailable
                message: The service is temporarily unavailable. Retry shortly.
                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>`.

````