Skip to main content
ProjectsEditingPagination
Project review on the API host, and Revise

Review a project from api.sigmora.org

  • Five project review operations now answer on api.sigmora.org; before, only the web host served them and the API host answered 404: GET /v1/projects/{projectId}/transcript (the composition’s transcript, playback media and review notes), POST /v1/projects/{projectId}/transcript (correct a word, cut words or restore them), GET /v1/projects/{projectId}/comments and POST /v1/projects/{projectId}/comments (review notes), and POST /v1/projects/{projectId}/share (a finished render’s watch link).
  • The transcript read is paged by words: wordLimit (default 1000) words per page, wordsNextCursor sent back as wordCursor, pages merged by assetId. A cursor from before the composition changed answers 409 conflict (details.reason stale_cursor); read again from the first page. Review notes page with cursor and nextCursor. See Pagination.

Revise a rendered cut

  • POST /v1/video/edit/approve accepts expectedGeneration to re-cut an already rendered edit: send the revision you are re-cutting (0 after the first approval) and omit it for the first approval.
  • GET /v1/jobs/{jobId}/proposal now also serves an approved proposal whose render finished, with status: "approved" (new enum value next to awaiting_review) and the new field proposal.generation. Send that number as expectedGeneration, only when status is approved.
  • A stale expectedGeneration (a revise that raced another approval) answers 409 conflict with details.currentGeneration, and is not charged. A cancelled cut, or one whose render is not ready (still running, or failed), answers 400 before any charge.
Autopilot
A paused autopilot stops manual runs too

enabled: false pauses manual runs, approvals and retries

  • Breaking: while a Brand’s autopilot is paused (enabled: false on PUT /v1/autopilots/{brandId}), POST /v1/autopilot-runs answers 409 conflict instead of starting a manual run, and POST /v1/autopilot-runs/{runId}/approve and POST /v1/autopilot-runs/{runId}/retry for its runs answer 409 conflict too; a waiting checkpoint keeps waiting. Before this change enabled paused only scheduled runs. An autopilot saved without enabled is paused (false is the default), so an integration that only starts runs itself now sets {"enabled": true} once.
  • The same three calls answer 409 conflict while the workspace’s Governance kill switch is on, and 503 upstream_unavailable while its Governance policy cannot be read; retry the same request.
AutopilotReddit
Governance lock on agent settings

Locked workspaces: only owners change agent settings

  • When a workspace’s Governance settings lock agent configuration, POST /v1/reddit-campaigns, PATCH /v1/reddit-campaigns/{campaignId} and PUT /v1/autopilots/{brandId} answer 403 forbidden for a key whose creator is not an owner (or an admin of the workspace’s organization). Pausing or completing a campaign ({"status":"paused"} or {"status":"completed"}) and pausing an existing autopilot ({"enabled":false}) stay open to editor keys.
  • If the lock cannot be checked, these calls answer 503 upstream_unavailable; retry with the same request.
VideoPricing
Remix pricing and source length

POST /v1/video/remix is priced by the work, and url sources have a length limit

  • With any url source, a remix is one video analysis (video-analysis, 150 credits) per url source. From transcripts alone it is one script (script, 100 credits), or one scene plan (scene-plan, 50 credits) when outputFormat is scenes. See Pricing & credits.
  • Breaking: each url source is analyzed up to 180 seconds. A longer video is refused with an error before anything is charged; before this change it was accepted. Trim the video, or send its text as a transcript source, which has no length limit beyond the request size.
  • POST /v1/agent/runs checks maxCredits against each step’s price for its planned arguments, so a remix with several url sources is capped before it runs instead of being charged past the bound.
  • PUT /v1/autopilots/{brandId}: an omitted maxVideosPerDay means 3 and an omitted maxPostsPerDay means 12, for autopilots saved before this change too.
API referencePaginationDocs
Reference and conventions

A reorganized API reference

  • The API reference is grouped into sections by what you are building — Projects, Assets, Jobs, Text, Video, UGC, Editing, 3D, Image, Audio, Publishing, Webhooks, Workflows, Agents, Research, Discovery and more — with short, consistent operation titles. Old reference URLs redirect to their new pages.
  • Core objects are published as named schemas — Job, JobArtifacts, Project, Brand, Product, Campaign, Capability, Theme, Trend and others — so generated clients get named types. See Client libraries.
  • Each operation lists only the error statuses it can return, and request bodies include working examples.

Cursor pagination everywhere

List endpoints now share one convention: limit and cursor in, nextCursor out (null on the last page). GET /v1/assets and variation batches accept cursor; their after / nextAfter spellings and the offset parameter on GET /v1/video/catalog/{domain} are deprecated and keep working. See Pagination.

Fixes

  • PATCH /v1/campaigns/{campaignId} and PATCH /v1/reddit-campaigns/{campaignId} change only the fields you send. A partial update such as {"status": "paused"} previously also reset unsent fields — description, connected accounts, platforms, schedule and Reddit caps — to their creation defaults.
  • POST /v1/workflow/context-snapshots accepts a body without retrievedPassages or exclusions, as documented; both default to [].
  • POST /v1/video/footage refuses a live price above maxCredits with the documented 409 conflict code instead of an undocumented price_changed.
  • Error bodies document requestId and timestamp.

New guides

Rate limits, Pagination, Versioning, Pricing & credits and this changelog. The Errors page now documents the response envelope exactly as the API returns it: {"success": false, "error": "...", "code": "..."}.
ResearchDiscovery
Proven content
UGCMCP
UGC Studio and AI creators
IntegrationsEditing
ChatGPT, granular edits and the agent skill
Editing
Sigma over the API
ErrorsVideo
Errors and voices
  • upstream_error now answers with HTTP 500 instead of 502, so the JSON error body reaches your client intact. The code is unchanged.
  • eleven_v4 is the ElevenLabs narration model for ttsModel.
Audio
Audio engineering
  • Engineer audio in plain words inside a connected Audiotool project — compose, arrange, mix and bounce — and split audio into stems, with free undo.
Discovery
Topic monitoring
  • Topic monitors watch a Brand’s niche on a schedule: save a monitor, run it, and read its discoveries and source health.