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

# A covers job: its takes, and the free allowance left

> Each take is making, ready (with Patch's private links to it, an hour long) or failed. A job none of whose takes could be made is failed, and `next` says why: when the image service turned down Patch's own key it's on Patch's side, another try won't help, and the game goes on with a cover of its own. With `wait` (seconds, up to 50), answers as soon as a take changes. If Patch missed the image service's call, reading it asks the service.



## OpenAPI

````yaml /api-reference/openapi.json get /projects/{owner}/{slug}/covers/{job}
openapi: 3.1.0
info:
  title: Patch API
  version: 1.0.0
  description: >-
    The public API behind patch.gg, the desktop app and pch. Changes within v1
    are additive only. Errors are { error: { code, message, details } }; branch
    on code.
servers:
  - url: https://patch.gg/api/v1
security: []
paths:
  /projects/{owner}/{slug}/covers/{job}:
    get:
      tags:
        - Covers
      summary: 'A covers job: its takes, and the free allowance left'
      description: >-
        Each take is making, ready (with Patch's private links to it, an hour
        long) or failed. A job none of whose takes could be made is failed, and
        `next` says why: when the image service turned down Patch's own key it's
        on Patch's side, another try won't help, and the game goes on with a
        cover of its own. With `wait` (seconds, up to 50), answers as soon as a
        take changes. If Patch missed the image service's call, reading it asks
        the service.
      parameters:
        - schema:
            type: string
            example: patch
          required: true
          name: owner
          in: path
        - schema:
            type: string
            example: demo-mod
          required: true
          name: slug
          in: path
        - schema:
            type: string
            format: uuid
          required: true
          name: job
          in: path
        - schema:
            type:
              - integer
              - 'null'
            minimum: 0
            maximum: 50
          required: false
          name: wait
          in: query
      responses:
        '200':
          description: The job
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoversJob'
        '308':
          description: Renamed; follow the Location header
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Not signed in
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearer: []
components:
  schemas:
    CoversJob:
      type: object
      properties:
        id:
          type: string
          format: uuid
        project:
          type: string
        kind:
          type: string
          enum:
            - make
            - fix
        state:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - failed
            - canceled
          description: >-
            succeeded once every take has settled and at least one is ready.
            failed when none could be made: next says whether another try can
            help
        shape:
          type:
            - string
            - 'null'
        subject:
          type:
            - string
            - 'null'
        instruction:
          type:
            - string
            - 'null'
        fixes:
          type:
            - string
            - 'null'
          format: uuid
          description: The take a fix job fixes
        takes:
          type: array
          items:
            $ref: '#/components/schemas/CoverTake'
        allowance:
          $ref: '#/components/schemas/CoversAllowance'
        next:
          type: string
          description: What to do next, for the person and their agent
        created_at:
          type: string
      required:
        - id
        - project
        - kind
        - state
        - shape
        - subject
        - instruction
        - fixes
        - takes
        - allowance
        - next
        - created_at
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: version_exists
            message:
              type: string
            details: {}
          required:
            - code
            - message
      required:
        - error
    CoverTake:
      type: object
      properties:
        id:
          type: string
          format: uuid
        shape:
          type: string
          enum:
            - wide
            - tall
        state:
          type: string
          enum:
            - making
            - ready
            - failed
        url:
          type:
            - string
            - 'null'
          description: >-
            The whole cover (2560 x 1440 wide, 1200 x 1800 tall), through a
            private link that lasts an hour
        preview_url:
          type:
            - string
            - 'null'
          description: The same at card size
        width:
          type:
            - integer
            - 'null'
        height:
          type:
            - integer
            - 'null'
        fixed_from:
          type:
            - string
            - 'null'
          format: uuid
          description: The take this one fixes
        set_as:
          type:
            - string
            - 'null'
          description: cover or tall_cover when it's the project's now
        error:
          type:
            - string
            - 'null'
      required:
        - id
        - shape
        - state
        - url
        - preview_url
        - width
        - height
        - fixed_from
        - set_as
        - error
    CoversAllowance:
      type: object
      properties:
        free:
          type: boolean
          enum:
            - true
        note:
          type: string
          description: >-
            Plain words for people and agents: Patch pays, and it costs the
            creator nothing
        takes_per_game:
          type: integer
        fixes_per_game:
          type: integer
        takes_used:
          type: integer
        fixes_used:
          type: integer
        takes_left:
          type: integer
        fixes_left:
          type: integer
        stopped:
          type:
            - string
            - 'null'
          description: >-
            Why none can be made now: covers_paused, covers_need_release (no
            release yet, not even a draft) or covers_allowance_used. Null when
            they can.
      required:
        - free
        - note
        - takes_per_game
        - fixes_per_game
        - takes_used
        - fixes_used
        - takes_left
        - fixes_left
        - stopped
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: An API key (pch_...) or the token from pch login.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.