API

Signed render completion webhooks

Receive durable terminal delivery events for render.completed, render.failed and render.cancelled.

Delivery contract

  • Each event has a unique event ID and includes the x-farpy-event-id header.
  • Use the event ID for idempotency and duplicate suppression. Receivers must tolerate duplicate delivery.
  • Delivery is HTTPS-only. Private, loopback and other blocked addresses are rejected.
  • DNS is resolved and pinned for delivery to reduce rebinding risk.
  • Redirects are not followed. Configure the final HTTPS endpoint directly.
  • Return an HTTP 2xx response before the delivery timeout to acknowledge successful receipt.
  • Failed deliveries use exponential backoff for up to four delivery attempts.
  • Undelivered events remain in the durable webhook queue for failed-delivery retention. No public deletion interval is promised.
  • Successfully delivered event IDs are recorded to prevent duplicate redelivery.

Payload and signature verification

Each request includes these headers:

x-farpy-event-id
x-farpy-event-type
x-farpy-timestamp
x-farpy-signature

The JSON payload includes id, type, created_at and data.job_id.

{
  "id": "evt_example",
  "type": "render.completed",
  "created_at": 1785220000,
  "data": {
    "job_id": "job_example"
  }
}

Verify x-farpy-signature before trusting the payload. Compute HMAC-SHA256 with the webhook secret over the exact UTF-8 bytes of x-farpy-timestamp + "." + raw_request_body. The expected header value is v1=<hex_digest>. Use the raw request body; parsing and re-serializing JSON can change the signed bytes. Compare signatures with a constant-time comparison. Reject stale timestamps according to your receiver tolerance window to reduce replay risk, and suppress repeated event IDs.

Terminal events

render.completed
render.failed
render.cancelled

Treat delivery as a notification. Confirm canonical job status through the status endpoint before taking irreversible action.

Production flow

capabilities
pricing
upload
submit
status
download
receipt
proof

API properties

  • API-key authentication
  • 100 MiB upload limit
  • Idempotent submission support
  • 60 requests per minute plus burst capacity
  • Cancellation before worker claim
  • Signed terminal webhooks
  • Receipts and proof artifacts
  • Machine-readable OpenAPI 3.1 specification

Start here

curl -sS https://farpy.com/v1/capabilities \
  -H "Authorization: Bearer $FARPY_API_KEY"