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

# List embed renders

> GET /v1/embed/renders — list a partner project's renders for an embedding host. Partner API key only.

<Info>**GET** `https://api.craftkit.dev/v1/embed/renders`</Info>

Lists renders (form submissions and other PDF instances) for the partner's project so an
embedding host can show a document history without a Craftkit dashboard session. Internal
`preview` and `dashboard` renders are always excluded.

## Authorization

Partner API key **only**. A session JWT is **not** accepted here.

<ParamField header="Authorization" type="string" required>
  `Bearer ck_live_…` — a project API key for a project with the embed partner enabled.
</ParamField>

## Query parameters

<ParamField query="limit" type="number" default="100">Page size. Clamped to 1–500.</ParamField>
<ParamField query="offset" type="number" default="0">Rows to skip (clamped to ≥ 0).</ParamField>
<ParamField query="templateId" type="string">Filter to a single Craftkit template UUID.</ParamField>

<ParamField query="status" type="string">
  Filter by status: `queued`, `rendering`, `succeeded`, `failed`, or `cancelled`. Applied after
  the page is fetched, so a filtered page may return fewer than `limit` rows.
</ParamField>

## Response

<ResponseField name="renders" type="object[]">
  <Expandable title="render">
    <ResponseField name="id" type="string" />

    <ResponseField name="status" type="string">`queued`, `rendering`, `succeeded`, `failed`, or `cancelled`.</ResponseField>
    <ResponseField name="source" type="string">Origin of the render. `preview` and `dashboard` are never returned.</ResponseField>

    <ResponseField name="templateId" type="string" />

    <ResponseField name="templateName" type="string | null">`null` if the template was deleted.</ResponseField>
    <ResponseField name="inputData" type="object">The variable data the render was produced from.</ResponseField>
    <ResponseField name="downloadUrl" type="string | null">Public PDF URL once the render succeeds.</ResponseField>

    <ResponseField name="errorMessage" type="string | null" />

    <ResponseField name="durationMs" type="number | null">Render time in milliseconds.</ResponseField>

    <ResponseField name="createdAt" type="string" />

    <ResponseField name="completedAt" type="string | null" />
  </Expandable>
</ResponseField>

<ResponseField name="limit" type="number">The effective (clamped) page size.</ResponseField>
<ResponseField name="offset" type="number">The effective offset.</ResponseField>

## Errors

| Status | code                    | Meaning                                                           |
| ------ | ----------------------- | ----------------------------------------------------------------- |
| 401    | `missing_authorization` | No `Authorization` header.                                        |
| 401    | `invalid_credentials`   | API key not found, revoked, or embed not enabled for the project. |

```bash cURL theme={null}
curl "https://api.craftkit.dev/v1/embed/renders?status=succeeded&limit=50" \
  -H "Authorization: Bearer $CRAFTKIT_API_KEY"
```

```json 200 theme={null}
{
  "renders": [
    {
      "id": "0193c2c3-...",
      "status": "succeeded",
      "source": "form",
      "templateId": "0193c2c3-...",
      "templateName": "Charter Handover",
      "inputData": { "customer": { "name": "Acme Corp" } },
      "downloadUrl": "https://cdn.craftkit.dev/renders/0193c2c3-....pdf",
      "errorMessage": null,
      "durationMs": 1820,
      "createdAt": "2026-06-05T10:00:00.000Z",
      "completedAt": "2026-06-05T10:00:02.000Z"
    }
  ],
  "limit": 50,
  "offset": 0
}
```
