Get invoice PDF link
Returns a short-lived presigned URL (valid for 5 minutes) that downloads the invoice PDF. The response never contains the PDF itself. Only invoices that already have a rendered PDF can be downloaded: for any other invoice, such as a draft or an open invoice, the response is 409 invoice_pdf_not_ready, and this request does not generate one. Treat the URL as a secret and do not log it.
/invoices/{id}/pdfReturns a short-lived presigned URL (valid for 5 minutes) that downloads the invoice PDF. The response never contains the PDF itself. Only invoices that already have a rendered PDF can be downloaded: for any other invoice, such as a draft or an open invoice, the response is 409 invoice_pdf_not_ready, and this request does not generate one. Treat the URL as a secret and do not log it.
Related endpoints
PUT /invoices/external/batch— Batch upsert invoices by external IDGET /invoices/{id}/usage-explain— Explain invoice usage chargesGET /invoices— List invoicesPOST /invoices— Create invoiceGET /invoices/{id}— Get invoicePATCH /invoices/{id}— Update invoiceDELETE /invoices/{id}— Delete invoicePOST /invoices/{id}/margin-estimate— Estimate invoice net by payment rail
Common errors
401 authentication_error— missing, invalid, expired, or revoked credential. Codes:authentication_failed,invalid_api_key,expired_api_key,api_key_revoked,session_invalid,merchant_required. Carries aWWW-Authenticate: Bearerchallenge.403 authorization_error— the caller is identified but the action is denied. Codes includeinsufficient_permissions,ip_not_allowed,merchant_mismatch, andorigin_not_allowed.404 resource_missing— the referenced resource does not exist or is not visible to your key.409 conflict— Idempotency-Key collision with a different body, or a concurrent state-transition conflict.429 rate_limit_error— coderate_limit_exceeded. Back off using theRetry-Afterheader (whole seconds);X-RateLimit-Resetis a UNIX timestamp in seconds.
Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.
In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.revkeen.com/v2/invoices/11111111-1111-4111-8111-111111111111/pdf" \
-H "x-api-key: $REVKEEN_API_KEY"Synthetic documentation data, validated against the response schema; not a live API result.
{ "data": { "url": "https://files.revkeen.com/invoices/example.pdf?X-Amz-Expires=300", "expires_at": "2026-10-09T10:05:00.000Z" }, "requestId": "00000000-0000-4000-8000-000000000001"}