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

# Get signed upload status

> Return the current verification status for a media item uploaded via the signed upload flow.
Use this to confirm the upload is ready before calling a generation endpoint with `media_id`.


## Usage Example

Poll this endpoint after `notify_upload_complete` until the upload has finished verification and the media is ready for generation.

```bash theme={null}
curl "https://api.viddyscribe.com/enterprise/api/get_upload_status?media_id=550e8400-e29b-41d4-a716-446655440000&gcs_path=users/user_123/videos/video.mp4" \
  -H "X-API-Key: YOUR_API_KEY"
```


## OpenAPI

````yaml get /enterprise/api/get_upload_status
openapi: 3.0.3
info:
  title: ViddyScribe Enterprise API
  version: 1.0.0
  description: >
    Enterprise API for ViddyScribe video processing and audio description
    generation.


    ## Authentication

    All endpoints require API key authentication via the `X-API-Key` header.


    ## Workflow

    1. Upload media using `/upload_media` - Returns `media_id`

    2. Generate text with `/generate_ad_text`, video with `/generate_ad_video`,
    or audio with `/generate_ad_audio` - Returns `job_id`

    3. Poll for results using `/get_results` - Returns status and outputs when
    done
  contact:
    name: ViddyScribe Support
    email: hello@viddyscribe.com
servers:
  - url: https://api.viddyscribe.com
    description: Production server
security:
  - ApiKeyAuth: []
tags:
  - name: Media
    description: Media upload operations
  - name: Processing
    description: Video processing operations
  - name: Results
    description: Results retrieval operations
paths:
  /enterprise/api/get_upload_status:
    get:
      tags:
        - Media
      summary: Get signed upload status
      description: >
        Return the current verification status for a media item uploaded via the
        signed upload flow.

        Use this to confirm the upload is ready before calling a generation
        endpoint with `media_id`.
      operationId: getUploadStatus
      parameters:
        - name: media_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
          description: Media ID returned by `upload_media`
        - name: gcs_path
          in: query
          required: false
          schema:
            type: string
          description: >-
            Optional storage path returned by `upload_media`; helps recover the
            canonical media if deduplication occurred
      responses:
        '200':
          description: Upload status returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  media_id:
                    type: string
                    format: uuid
                    description: Original media ID provided by the client
                  canonical_media_id:
                    type: string
                    format: uuid
                    description: Canonical media ID to use for generation
                  upload_status:
                    type: string
                    description: Current verification status for the uploaded media
                  duration_seconds:
                    type: number
                    nullable: true
                    description: Video duration in seconds when available
                  frame_rate:
                    type: number
                    nullable: true
                    description: Video frame rate (fps) when available
              example:
                media_id: 550e8400-e29b-41d4-a716-446655440000
                canonical_media_id: 550e8400-e29b-41d4-a716-446655440000
                upload_status: completed
                duration_seconds: 45.5
                frame_rate: 30
        '400':
          description: Bad request - missing or invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Media not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: >-
            Primary error field. Many endpoints return a machine-readable value
            here, while some 409 media-state responses return a human-readable
            string and place the machine-readable identifier in code
        code:
          type: string
          description: >-
            Optional machine-readable identifier for responses that separate the
            human-readable error text from the stable error code, such as
            upload_not_ready or upload_failed
        upload_status:
          type: string
          description: >-
            Optional media upload status included on media-state conflict
            responses
        message:
          type: string
          description: Human-readable error message
        details:
          type: string
          description: Additional error details when available
      example:
        error: invalid_input
        message: video_id is required
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >
        API key for authentication. Obtain from your team admin.


        Example: `X-API-Key:
        vsk_abc123def456ghi789jkl012mno345pqr678stu901vwx234yz`

````