---
title: "Get a cover and its asset availability"
method: GET
path: "/api/v1/covers/{coverId}"
tags: ["Covers"]
---

# Get a cover and its asset availability

`GET /api/v1/covers/{coverId}`

## Request

- Base URL: `https://beyourcover.com`
- URL: `https://beyourcover.com/api/v1/covers/{coverId}`
- Auth: HTTP bearer

Returns the cover's metadata and, for each of the six asset types (`preview`, `full`, `audiobook_preview`, `audiobook_full`, `no_text`, `no_text_full`), whether it exists plus a 1-hour signed download URL when it does.

## Path parameters

- `coverId` string, uuid, required

## Response `200`

Cover detail.

- CoverDetail
  - `coverId` string, uuid, required: The cover's public id.
  - `bookId` string, uuid, required
  - `coverStyle` string, nullable, required
  - `visibility` 'default' | 'favorite' | 'hidden', required: `favorite` covers lead their book on the shelf (the newest one wins); `hidden` covers stay out of `GET /api/v1/books/{bookId}/covers` unless `include_hidden=true`. Set it with `PATCH /api/v1/covers/{coverId}`.
  - `assets` object, required
    - `preview` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.
    - `full` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.
    - `audiobook_preview` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.
    - `audiobook_full` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.
    - `no_text` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.
    - `no_text_full` AssetAvailability, required
      - `available` boolean, required
      - `signedUrl` string, uri: Present only when available is true. Signed URL valid for 1 hour.
      - `expiresAt` string, date-time: Present only when available is true.

## Other responses

- `400`: `code`: `missing_cover_id` (defensive; the path parameter is normally always present).
- `401`: Missing/malformed API key, unknown or inactive key, or inactive subscription detected during credit checks. `code`: `unauthorized`.
- `403`: The API key is valid but its owner has no active enterprise subscription. `code`: `forbidden`.
- `404`: Cover not found or not owned by this API key's user. `code`: `cover_not_found`.
- `500`: Unexpected server error. `code`: `internal_error`.

---

[API](https://skmtc.dev/beyourcover/apis/beyourcover-partner-api.md) · [All operations](https://skmtc.dev/beyourcover/apis/beyourcover-partner-api/llms.txt) · [OpenAPI document](https://skmtc.dev/beyourcover/apis/beyourcover-partner-api/revisions/82ad2c7c8ede?raw)
