Video — entry 017 of 35
Rendobar
Rendobar is a credit-billed REST API for server-side media processing — arbitrary sandboxed FFmpeg commands, subtitle and animated-caption burning, and JSON-timeline video composition — aimed at both developers and AI agents, with an MCP server for agent tool-calling. New accounts get $5 of free signup credit before per-job nanodollar billing on top of the $9/mo Pro plan kicks in; CORS is locked to Rendobar's own app.rendobar.com dashboard rather than open to arbitrary origins (confirmed: Access-Control-Allow-Origin doesn't change no matter what Origin is sent).
GreatAPIs Score
Auth quickstart
- Get a key at the provider
- Send it on every request as a header
Authorization: <key> - The exact header isn't documented — Authorization is a common default; confirm in the provider's docs.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
Jobs17
Job creation and management (submit, list, get, cancel, download)
GET/jobsList jobs
| Name | In | Required | Type |
|---|---|---|---|
status | query | no | string |
type | query | no | string |
limit | query | no | string |
offset | query | no | string |
sort | query | no | string |
order | query | no | string |
client | query | no | string |
from | query | no | integernull |
to | query | no | integernull |
| Status | Description | Schema |
|---|---|---|
200 | List of jobs | — |
401 | Unauthorized | — |
POST/jobsCreate a job (generic)
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Job completed synchronously or duplicate (idempotent) | — |
201 | Job created and dispatched successfully | — |
400 | Validation error | — |
401 | Unauthorized | — |
402 | Insufficient credits | — |
403 | Forbidden — job type not allowed on plan | — |
429 | Rate limited | — |
POST/jobs/:id/disputeDispute a job charge
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | Dispute logged for admin review | — |
404 | Job not found | — |
409 | Job not eligible for dispute | — |
GET/jobs/statsJob stats
| Name | In | Required | Type |
|---|---|---|---|
window | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Job stats | — |
401 | Unauthorized | — |
GET/jobs/typesList job types
| Status | Description | Schema |
|---|---|---|
200 | List of job types | — |
429 | Rate limited | — |
GET/jobs/types/{type}/schemaGet job type parameter schema
| Name | In | Required | Type |
|---|---|---|---|
type | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Parameter schema for the job type | — |
404 | Job type not found or not active | — |
429 | Rate limited | — |
GET/jobs/{id}Get job details
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job details | — |
401 | Unauthorized | — |
404 | Job not found | — |
POST/jobs/{id}/cancelCancel a job
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job cancelled | — |
401 | Unauthorized | — |
404 | Job not found | — |
409 | Job cannot be cancelled in current status | — |
GET/jobs/{id}/downloadDownload job output
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Output file stream | — |
400 | Job has no output available | — |
401 | Unauthorized | — |
404 | Job or output file not found | — |
GET/jobs/{id}/logsGet job logs
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job logs | — |
401 | Unauthorized | — |
404 | Job or logs not found | — |
GET/jobs/{id}/metricsGet job resource utilization (deprecated alias for /resources)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job resource utilization series | — |
401 | Unauthorized | — |
404 | Job not found | — |
GET/jobs/{id}/resourcesGet job resource utilization
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job resource utilization series | — |
401 | Unauthorized | — |
404 | Job not found | — |
GET/jobs/{id}/shareGet share link info
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Share link info | — |
POST/jobs/{id}/shareCreate a public share link for a job output
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
201 | Share link created | — |
400 | Job not complete or no output | — |
403 | Plan does not allow sharing or quota exceeded | — |
404 | Job not found | — |
409 | Job already shared | — |
DELETE/jobs/{id}/shareRemove a public share link
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Share link removed | — |
404 | Job or share not found | — |
GET/jobs/{id}/throughputGet job encode throughput
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job encode-throughput series (fps/speed/frame) | — |
401 | Unauthorized | — |
404 | Job not found | — |
GET/jobs/{id}/timingsGet job execution timings
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Job timings | — |
401 | Unauthorized | — |
404 | Job not found | — |
Models1
Generation model catalog (image.generate / image.edit)
GET/modelsList generation models
| Name | In | Required | Type |
|---|---|---|---|
job | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | List of generation models | — |
401 | Unauthorized | — |
Billing12
Check account balance and usage history
POST/billing/checkout/creditsCreate credit purchase checkout
application/json
| Status | Description | Schema |
|---|---|---|
200 | Checkout session created | — |
400 | Invalid amount | — |
401 | Unauthorized | — |
500 | Checkout creation failed | — |
POST/billing/checkout/proCreate Pro subscription checkout
| Status | Description | Schema |
|---|---|---|
200 | Checkout session created | — |
401 | Unauthorized | — |
500 | Pro plan not configured or checkout creation failed | — |
GET/billing/historyGet billing history
| Name | In | Required | Type |
|---|---|---|---|
page | query | no | string |
limit | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Billing history | — |
401 | Unauthorized | — |
GET/billing/history/:id/pdfDownload invoice PDF
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
302 | Redirect to Polar invoice PDF | — |
404 | Order or invoice not found | — |
GET/billing/payment-methodsList payment methods
| Status | Description | Schema |
|---|---|---|
200 | Payment methods list | — |
401 | Unauthorized | — |
GET/billing/payment-methods/portal-urlGet customer portal URL
| Status | Description | Schema |
|---|---|---|
200 | Customer portal URL | — |
401 | Unauthorized | — |
404 | Customer not found | — |
DELETE/billing/payment-methods/{id}Delete payment method
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Payment method deleted | — |
400 | Payment method in use | — |
401 | Unauthorized | — |
404 | Customer or payment method not found | — |
GET/billing/stateGet unified billing state
| Status | Description | Schema |
|---|---|---|
200 | Billing state | — |
401 | Unauthorized | — |
PATCH/billing/subscriptionManage subscription
application/json
| Status | Description | Schema |
|---|---|---|
200 | Subscription updated | — |
400 | Bad request | — |
401 | Unauthorized | — |
404 | No subscription found | — |
GET/billing/transactionsGet transaction history
| Name | In | Required | Type |
|---|---|---|---|
page | query | no | string |
limit | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Transaction history | — |
401 | Unauthorized | — |
GET/billing/usageGet usage summary
| Name | In | Required | Type |
|---|---|---|---|
start | query | no | string |
end | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Usage summary | — |
400 | Invalid date | — |
401 | Unauthorized | — |
GET/billing/usage-by-clientGet usage broken down by originating client
| Name | In | Required | Type |
|---|---|---|---|
days | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Usage grouped by client, busiest first | — |
401 | Unauthorized | — |
Organizations13
Manage organizations and members
GET/orgsList user organizations
| Status | Description | Schema |
|---|---|---|
200 | User organizations list | — |
401 | Unauthorized | — |
POST/orgsCreate organization
application/json
| Status | Description | Schema |
|---|---|---|
201 | Organization created | — |
400 | Validation error | — |
403 | Organization limit reached | — |
409 | Slug already taken | — |
GET/orgs/currentGet current organization
| Status | Description | Schema |
|---|---|---|
200 | Organization details retrieved successfully | — |
401 | Unauthorized - missing or invalid API key | — |
404 | Organization not found | — |
PATCH/orgs/currentUpdate current organization
application/json
| Status | Description | Schema |
|---|---|---|
200 | Organization updated successfully | — |
400 | Validation error | — |
403 | Not the organization owner | — |
409 | Slug already taken | — |
DELETE/orgs/currentDelete current organization
| Status | Description | Schema |
|---|---|---|
204 | Organization deleted successfully | — |
403 | Not the organization owner | — |
GET/orgs/current/callback-secretGet callback signing secret
| Status | Description | Schema |
|---|---|---|
200 | Callback signing secret | — |
401 | Unauthorized | — |
POST/orgs/current/callback-secret/rotateRotate callback signing secret
| Status | Description | Schema |
|---|---|---|
200 | New callback signing secret | — |
401 | Unauthorized | — |
GET/orgs/current/settingsGet org settings
| Status | Description | Schema |
|---|---|---|
200 | Org settings | — |
401 | Unauthorized | — |
PATCH/orgs/current/settingsUpdate org settings
application/json
| Status | Description | Schema |
|---|---|---|
200 | Settings updated | — |
400 | Validation error | — |
401 | Unauthorized | — |
POST/team/inviteInvite team member
application/json
| Status | Description | Schema |
|---|---|---|
200 | Invitation sent | — |
400 | Validation error | — |
403 | Insufficient role | — |
409 | Already a member or pending invitation | — |
POST/team/removeRemove team member
application/json
| Status | Description | Schema |
|---|---|---|
200 | Member removed | — |
403 | Insufficient role or cannot remove owner | — |
404 | Member not found | — |
POST/team/revoke-invitationRevoke invitation
application/json
| Status | Description | Schema |
|---|---|---|
200 | Invitation revoked | — |
403 | Insufficient role | — |
404 | Invitation not found | — |
PATCH/team/roleChange member role
application/json
| Status | Description | Schema |
|---|---|---|
200 | Role updated | — |
403 | Insufficient role or cannot change owner | — |
404 | Member not found | — |
API Keys4
Create and manage API keys
GET/api-keysList API keys
| Status | Description | Schema |
|---|---|---|
200 | API keys retrieved successfully | — |
401 | Unauthorized | — |
POST/api-keysCreate API key
application/json
| Status | Description | Schema |
|---|---|---|
201 | API key created successfully | — |
401 | Unauthorized | — |
PATCH/api-keys/:idUpdate API key
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | API key updated | — |
400 | Validation error | — |
401 | Unauthorized | — |
404 | Not found | — |
DELETE/api-keys/:idRevoke API key
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | API key revoked successfully | — |
401 | Unauthorized | — |
404 | API key not found or already revoked | — |
Assets9
Upload and manage PSD templates and design assets
GET/assetsList assets
| Name | In | Required | Type |
|---|---|---|---|
kind | query | no | string |
scope | query | no | string |
status | query | no | string |
lifecycle | query | no | string |
limit | query | no | string |
offset | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Paginated list of assets | — |
401 | Unauthorized | — |
POST/assetsInitialize an asset upload
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Deduplicated — a ready asset with this checksum already exists | — |
201 | Pending asset created with presigned upload URL(s) | — |
401 | Unauthorized | — |
413 | File exceeds the plan's upload size limit | — |
429 | Too many uploads in progress | — |
GET/assets/templatesList system PSD templates
| Name | In | Required | Type |
|---|---|---|---|
limit | query | no | string |
offset | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | Paginated list of system PSD templates | — |
401 | Unauthorized | — |
GET/assets/{id}Get asset details
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Asset details | — |
401 | Unauthorized | — |
404 | Asset not found or not accessible | — |
DELETE/assets/{id}Delete an asset
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Asset deleted successfully | — |
401 | Unauthorized | — |
403 | Cannot delete system assets | — |
404 | Asset not found | — |
POST/assets/{id}/completeFinalize an asset upload
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | Asset finalized and ready | — |
400 | Multipart completion is missing part etags | — |
401 | Unauthorized | — |
402 | Storage quota exceeded | — |
404 | Asset not found | — |
409 | Asset is not in a finalizable state, or the upload was not found in storage | — |
413 | Uploaded file exceeds the plan's size limit | — |
GET/assets/{id}/contentGet asset content (redirect)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
302 | Redirect to a presigned download URL | — |
401 | Unauthorized | — |
404 | Asset not found | — |
GET/assets/{id}/downloadGet a presigned download URL
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Presigned download URL | — |
401 | Unauthorized | — |
404 | Asset not found | — |
409 | Asset is not ready for download | — |
GET/assets/{id}/previewGet asset thumbnail preview
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
401 | Unauthorized | — |
501 | Not implemented | — |
Webhooks9
Configure webhook endpoints and view delivery history
GET/webhooks/deliveriesList webhook deliveries
| Name | In | Required | Type |
|---|---|---|---|
endpointId | query | no | string |
event | query | no | string |
status | query | no | string |
jobId | query | no | string |
limit | query | no | integer |
offset | query | no | integernull |
| Status | Description | Schema |
|---|---|---|
200 | List of webhook deliveries | — |
401 | Unauthorized | — |
POST/webhooks/deliveries/{id}/retryRetry a failed webhook delivery
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Delivery re-enqueued for retry | — |
401 | Unauthorized | — |
404 | Delivery or endpoint not found | — |
409 | Delivery is not in a retryable state | — |
GET/webhooks/endpointsList webhook endpoints
| Status | Description | Schema |
|---|---|---|
200 | List of webhook endpoints | — |
401 | Unauthorized | — |
POST/webhooks/endpointsCreate webhook endpoint
application/json
| Status | Description | Schema |
|---|---|---|
201 | Endpoint created. Signing secret shown in plaintext (only time it is visible). | — |
400 | Invalid URL or events | — |
401 | Unauthorized | — |
409 | Maximum endpoints per organization reached | — |
GET/webhooks/endpoints/{id}Get webhook endpoint
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Webhook endpoint | — |
401 | Unauthorized | — |
404 | Endpoint not found | — |
PATCH/webhooks/endpoints/{id}Update webhook endpoint
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | Endpoint updated | — |
400 | Invalid URL or events | — |
401 | Unauthorized | — |
404 | Endpoint not found | — |
DELETE/webhooks/endpoints/{id}Delete webhook endpoint
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Endpoint deleted | — |
401 | Unauthorized | — |
404 | Endpoint not found | — |
POST/webhooks/endpoints/{id}/secretRotate webhook signing secret
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Secret rotated. New signing secret shown in plaintext (only time it is visible). | — |
401 | Unauthorized | — |
404 | Endpoint not found | — |
409 | Secret was rotated less than 24 hours ago | — |
POST/webhooks/endpoints/{id}/testSend test webhook event
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Test event sent | — |
401 | Unauthorized | — |
404 | Endpoint not found | — |
429 | Rate limited (max 10 test events per minute) | — |
Upload Sessions4
GET/upload-sessions/{token}Get upload session state
| Name | In | Required | Type |
|---|---|---|---|
token | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Session state (active or done) | — |
404 | Unknown token | — |
410 | Session expired | — |
POST/upload-sessions/{token}/doneMark an upload session done
| Name | In | Required | Type |
|---|---|---|---|
token | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Session marked done | — |
404 | Unknown token | — |
410 | Session expired or already done | — |
POST/upload-sessions/{token}/filesInitialize a file upload against a session
| Name | In | Required | Type |
|---|---|---|---|
token | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Deduplicated — a ready asset with this checksum already exists | — |
201 | Pending asset created with presigned upload URL(s) | — |
403 | Session has reached its file cap | — |
404 | Unknown token | — |
410 | Session expired or no longer active | — |
413 | File exceeds the org's plan upload size limit | — |
POST/upload-sessions/{token}/files/{assetId}/completeFinalize a file upload against a session
| Name | In | Required | Type |
|---|---|---|---|
token | path | yes | string |
assetId | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | Asset finalized and ready | — |
400 | Multipart completion is missing part etags | — |
404 | Unknown token, or assetId not tracked by this session | — |
409 | Asset is not in a finalizable state, or the upload was not found in storage | — |
410 | Session expired or no longer active | — |
413 | Uploaded file exceeds the org's plan size limit | — |
Try it
Developer reference
https://api.rendobar.comFree: 120 API requests/min; Pro ($9/mo): 600 API requests/min
- POST/jobs
- GET/jobs/{id}
Changelog
- gained an OpenAPI spec, official SDKs and a pricing page
- content changed