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

# Consultar job

> Retorna status, progresso e result.download_url quando completed.
Requer API key válida do mesmo projeto.




## OpenAPI

````yaml /openapi.yaml get /jobs/{jobId}
openapi: 3.1.0
info:
  title: Shappire Media API
  version: 1.0.0
  description: >
    API pública para resolver metadados de mídia e enfileirar downloads
    assíncronos.


    - Base URL produção: `https://api.shappire.tools/v1`

    - Autenticação: `X-API-Key` (recomendado) ou `Authorization: Bearer`

    - Envelope de sucesso: `{ "data": ... }`

    - Envelope de erro: `{ "error": { "code", "message", "request_id" } }`

    - YouTube não é suportado (bloqueio de IP de servidor)
servers:
  - url: https://api.shappire.tools/v1
    description: Production
  - url: http://localhost:8080/v1
    description: Local development
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Health
    description: Status da API
  - name: Platforms
    description: Plataformas suportadas
  - name: Media
    description: Resolução e download de mídia
  - name: Jobs
    description: Consulta de jobs assíncronos
paths:
  /jobs/{jobId}:
    get:
      tags:
        - Jobs
      summary: Consultar job
      description: |
        Retorna status, progresso e result.download_url quando completed.
        Requer API key válida do mesmo projeto.
      parameters:
        - in: path
          name: jobId
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Job status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Job not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    JobResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            status:
              type: string
              enum:
                - queued
                - processing
                - completed
                - failed
            progress:
              type: number
            platform:
              type: string
            requested_format:
              type: string
            created_at:
              type: string
              format: date-time
            started_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
            result:
              $ref: '#/components/schemas/JobResult'
            error:
              type: object
              properties:
                code:
                  type: string
                message:
                  type: string
    ErrorEnvelope:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Código estável para lógica do integrador
            message:
              type: string
              description: Mensagem legível (inglês)
            request_id:
              type: string
              description: ID de correlação — também em header X-Request-Id
    JobResult:
      type: object
      properties:
        download_url:
          type: string
        filename:
          type: string
        mime_type:
          type: string
        size_bytes:
          type: integer
          description: Atualmente sempre null na resposta
        expires_at:
          type: string
          format: date-time
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Chave de API no formato shp_live_... (produção) ou shp_test_...
        (desenvolvimento)
    BearerAuth:
      type: http
      scheme: bearer
      description: Alternativa compatível — envie a chave como Bearer token

````