---
title: "Subscribe a callback to future successful completions"
method: POST
path: "/render/subscriptions"
---

# Subscribe a callback to future successful completions

`POST /render/subscriptions`

## Request

- Base URL: `https://rendry.io/api/v1`
- URL: `https://rendry.io/api/v1/render/subscriptions`
- Auth: HTTP bearer

Requires a render or full API key. Creation is serialized with account completions; only events after start_cursor enqueue deliveries. Repeating the same URL with the same issuing key returns the same subscription. Notifications contain id, delivery_id, job_id, cursor and event=render.finished; retrieve authoritative output from GET /render/completions?job_id. Delivery is at least once, with bounded persisted retry and receipt retention. An already in-flight request can finish after unsubscribe/revocation. Responses never return target_url.

## Headers

- `X-End-User` string
- `X-Rendry-Account` string

## Request body

- object
  - `target_url` string, uri, required: Public HTTP(S) destination; maximum 4096 UTF-8 bytes. Private addresses fail at creation; DNS and redirect destinations are checked on each delivery.

## Response `201`

Created subscription or same-key same-destination existing subscription

- CompletionSubscription
  - `id` string, required
  - `created_at` string, date-time, required
  - `start_cursor` string, required: Committed completion cutoff when this subscription began; older retained jobs require explicit replay.

## Other responses

- `400`: Coded refusal; no callback URL is included.
- `401`: Coded refusal; no callback URL is included.
- `403`: Coded refusal; no callback URL is included.
- `409`: Coded refusal; no callback URL is included.
- `503`: Coded refusal; no callback URL is included.

---

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