All pages
Reference
API reference
Six endpoints. Two return bytes rather than JSON; the rest return JSON with an object field naming the type. Each has its own page.
- GET /api/v1/mediaList the photos in your workspace. This is where a media_id comes from — the render endpoint accepts no URLs, so every render starts here.
- POST /api/v1/mediaAdd a photo to your workspace library from raw bytes, and get back a media_id you can render immediately. This is what lets an integration run fully headless — no portal upload step.
- GET /api/v1/media/{id}/previewThe photo itself, so an operator can see what they are about to render. Returns image bytes, not JSON.
- GET /api/v1/integrations/google/connectBegin a one-time Google Drive connection. Returns a Google consent URL to open once; after that, imports run without asking again.
- GET /api/v1/integrations/googleWhether this workspace is connected to Google Drive, and with which scopes.
- DELETE /api/v1/integrations/googleDisconnect Google Drive: revoke the token at Google and forget the connection.
- GET /api/v1/integrations/google/foldersList the sub-folders of a Drive folder, so you can find the folder_id to import from.
- POST /api/v1/media/importBulk-import every image in a Google Drive folder into your library. Returns an import id to poll — the work runs in the background.
- GET /api/v1/media/imports/{id}The progress and result of one bulk import: counts, and a per-file breakdown.
- POST /api/v1/rendersStart a render. Returns 202 immediately with an opaque id — the render itself takes about 2 minutes.
- GET /api/v1/renders/{id}Check a render. This is the call your poll loop makes. Polling is free and uncounted.
- GET /api/v1/renders/{id}/downloadThe finished MP4. Returns video bytes, not JSON.
- GET /api/v1/usageThis billing cycle's render counts. Counts only — never dollars, cost, or provider detail.
Conventions that hold everywhere
- Base URL is
https://omniscape.io. Every request needsAuthorization: Bearer. - Every response carries
X-Request-Id; errors repeat it asrequest_id. - Timestamps are ISO 8601 UTC. Ids you are given are opaque — pass them back, do not parse or construct them.
- An object that is not yours is
404, never403, so nothing here can be used to discover whether an id exists. - Only
POST /api/v1/renderscosts money. Everything else is free and uncounted.