> ## 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 job results

> Check the status of a processing job and retrieve results when complete.

**Job statuses:**
- `queued` - Job is waiting to be processed
- `processing` - Job is currently being processed
- `done` - Job finished successfully
  - `video_signed_url`: Signed URL to download result (video/audio jobs, expires in 15 min)
  - `audio_signed_url`: Signed URL to download audio track (standard_ad video jobs only, expires in 15 min)
  - `output`: JSON/Text with generated descriptions (if available)
- `failed` - Job failed, error message available




## OpenAPI

````yaml get /enterprise/api/get_results
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_results:
    get:
      tags:
        - Results
      summary: Get job results
      description: |
        Check the status of a processing job and retrieve results when complete.

        **Job statuses:**
        - `queued` - Job is waiting to be processed
        - `processing` - Job is currently being processed
        - `done` - Job finished successfully
          - `video_signed_url`: Signed URL to download result (video/audio jobs, expires in 15 min)
          - `audio_signed_url`: Signed URL to download audio track (standard_ad video jobs only, expires in 15 min)
          - `output`: JSON/Text with generated descriptions (if available)
        - `failed` - Job failed, error message available
      operationId: getResults
      parameters:
        - name: job_id
          in: query
          required: true
          description: >-
            Job ID returned from generate_ad_text, generate_ad_video, or
            generate_ad_audio
          schema:
            type: string
          example: task_abc123xyz
      responses:
        '200':
          description: Job status retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                    description: Job identifier
                  status:
                    type: string
                    enum:
                      - queued
                      - processing
                      - done
                      - failed
                    description: Current job status
                  media_id:
                    type: string
                    format: uuid
                    description: Media being processed
                  created_at:
                    type: string
                    format: date-time
                    description: Job creation timestamp
                  updated_at:
                    type: string
                    format: date-time
                    description: Job last update timestamp
                  video_signed_url:
                    type: string
                    format: uri
                    description: >-
                      Signed URL to download result (video/audio jobs, expires
                      in 15 minutes)
                  audio_signed_url:
                    type: string
                    format: uri
                    description: >-
                      Signed URL to download audio track (standard_ad video jobs
                      only, expires in 15 minutes)
                  output:
                    type: object
                    description: |
                      Output with generated descriptions (if available).
                      Format depends on requested format:
                      - `json`: Returns `segments` array
                      - `vtt`/`edl`: Returns `format` and `content` string
                  error:
                    type: string
                    description: >
                      Stable, machine-readable error code (only present when
                      `status=failed`).

                      Switch on this value to handle failures programmatically.
                      See

                      [Job Failure
                      Errors](/api-reference/overview#job-failure-errors)

                      for the full list of codes and their meanings.
                  message:
                    type: string
                    description: >-
                      Human-readable error description (only present when
                      `status=failed`). Suitable for display in your UI.
              examples:
                queued:
                  summary: Job queued
                  value:
                    job_id: task_abc123xyz
                    status: queued
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:00:00Z'
                processing:
                  summary: Job processing
                  value:
                    job_id: task_abc123xyz
                    status: processing
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:05:00Z'
                doneVideoWithText:
                  summary: Video job completed (with descriptions)
                  value:
                    job_id: task_abc123xyz
                    status: done
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:10:00Z'
                    video_signed_url: >-
                      https://storage.googleapis.com/bucket/path/to/result.mp4?X-Goog-Signature=...
                    audio_signed_url: >-
                      https://storage.googleapis.com/bucket/path/to/result.wav?X-Goog-Signature=...
                    output:
                      format: vtt
                      content: |-
                        WEBVTT

                        1
                        00:00:05.000 --> 00:00:07.000
                        A person walks into frame
                doneTextJson:
                  summary: Text job completed (JSON format)
                  value:
                    job_id: task_abc123xyz
                    status: done
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:10:00Z'
                    output:
                      segments:
                        - id: '1'
                          start_time: 0.5
                          end_time: 3.1
                          description: A person walks into frame
                        - id: '2'
                          start_time: 3.2
                          end_time: 5.9
                          description: They pick up an object
                doneTextVtt:
                  summary: Text job completed (VTT format)
                  value:
                    job_id: task_abc123xyz
                    status: done
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:10:00Z'
                    output:
                      format: vtt
                      content: |-
                        WEBVTT

                        1
                        00:00:05.000 --> 00:00:07.000
                        A person walks into frame

                        2
                        00:00:12.500 --> 00:00:14.500
                        They pick up an object
                doneTextEdl:
                  summary: Text job completed (EDL format)
                  value:
                    job_id: task_abc123xyz
                    status: done
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:10:00Z'
                    output:
                      format: edl
                      content: >-
                        TITLE: Audio Descriptions


                        001 AX V C 00:00:05:00 00:00:07:00 00:00:05:00
                        00:00:07:00

                        * FROM CLIP NAME: A person walks into frame
                failed:
                  summary: Job failed
                  value:
                    job_id: task_abc123xyz
                    status: failed
                    media_id: 550e8400-e29b-41d4-a716-446655440000
                    created_at: '2025-09-30T08:00:00Z'
                    updated_at: '2025-09-30T08:02:00Z'
                    error: standard_ad_not_enough_gaps
                    message: >-
                      Not enough silent gaps for Standard AD. Set auto_fit:
                      false to place descriptions over dialogue, or switch to
                      Extended AD.
        '400':
          description: Bad request - missing job_id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Job not found or access denied
          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`

````