feat: content V2 docs — malleable-first architecture, templates optional#100
feat: content V2 docs — malleable-first architecture, templates optional#100sweetmantech merged 5 commits intomainfrom
Conversation
- OpenAPI: move PATCH edit from /video to /content, add image_url input
- OpenAPI: ContentTemplate schema — rename name→id, drop defaultLipsync
- OpenAPI: add GET /api/content/templates/{id} detail endpoint
- OpenAPI: add template field to video, image, text primitive schemas
- OpenAPI: make pipeline template optional (remove default)
- OpenAPI: remove V1 artifacts (era_config, pipeline_config)
- Guide: new content.mdx — primitives, templates, override priority, video modes
- Guide: update content-agent.mdx — template is optional
- Nav: add Content group to Guides tab
Made-with: Cursor
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 10 minutes and 21 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughUpdated API reference and docs: added multiple content primitive endpoints and a template-detail endpoint, changed edit endpoint from Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
api-reference/openapi.json (2)
5999-6049:⚠️ Potential issue | 🔴 CriticalAdd missing schema definitions for the
/api/music/*endpointsThe operations reference schemas
MusicComposeRequest,MusicComposeDetailedRequest,MusicStreamRequest,MusicCreatePlanRequest,MusicCreatePlanResponse, andMusicErrorResponse, but none are defined incomponents.schemas. This breaks any OpenAPI resolver or codegen tool. Add these schema definitions tocomponents.schemasor update the$refs to point to existing definitions.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 5999 - 6049, The OpenAPI spec references missing schema definitions: MusicComposeRequest, MusicComposeDetailedRequest, MusicStreamRequest, MusicCreatePlanRequest, MusicCreatePlanResponse, and MusicErrorResponse; add these schemas under components.schemas (or change the $ref targets to the correct existing schema names) so the $ref entries in the endpoints resolve; ensure each schema matches the expected request/response shapes (e.g., MusicComposeRequest, MusicComposeDetailedRequest, MusicStreamRequest for request bodies and MusicCreatePlanResponse, MusicErrorResponse for responses) and update any example/required fields accordingly.
13660-13775:⚠️ Potential issue | 🟠 MajorEncode the input and config requirements as JSON Schema constraints.
The schema currently has no machine-readable enforcement for its documented rules. An empty object
{}would pass validation despite requiring at least one ofvideo_url,image_url, oraudio_url, and eithertemplateoroperations. This weakens validation, SDK generation, and documentation.Use
anyOfto enforce at least one input, andallOfwithanyOfto enforce the template/operations requirement. Also addminItems: 1to theoperationsarray.🔧 Suggested fix
"ContentCreateEditRequest": { "type": "object", "description": "Must provide at least one input (video_url, image_url, or audio_url)", + "anyOf": [ + { "required": ["video_url"] }, + { "required": ["image_url"] }, + { "required": ["audio_url"] } + ], + "allOf": [ + { + "anyOf": [ + { "required": ["template"] }, + { "required": ["operations"] } + ] + } + ], "properties": { @@ "operations": { "type": "array", + "minItems": 1, "description": "Array of edit operations to apply in order. Required if template is not provided.",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 13660 - 13775, The ContentCreateEditRequest schema currently allows an empty object; update the JSON Schema for ContentCreateEditRequest to enforce the documented rules by adding an anyOf at the root that requires at least one of the input URLs (video_url, image_url, audio_url), add an allOf group that enforces "template OR operations" (use anyOf inside allOf: one branch requires "template", the other requires "operations"), and add "minItems: 1" to the operations array definition; ensure these constraints reference the existing property names (video_url, image_url, audio_url, template, operations) so validators and generated SDKs will reject invalid empty payloads.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@api-reference/openapi.json`:
- Around line 12307-12310: Update the OpenAPI schema for ContentCreateResponse
so the template property is not required and its schema allows null;
specifically, remove "template" from the ContentCreateResponse's required array
and change the template schema (under the ContentCreateResponse object) to
accept type "string" or "null" (or add "nullable": true) so successful
template-free (malleable) responses can be represented. Apply the same change
for the duplicate/related response definitions referenced around the other block
(the section spanning 12369-12406) to ensure consistency.
- Around line 12505-12630: The ContentTemplateDetail.edit.operations schema
currently only exposes the operation "type" and is lossy; update
ContentTemplateDetail.edit.operations to mirror the full operation shape used by
ContentCreateEditRequest.operations by adding the additional properties (e.g.,
start, duration, aspect, content, audio_url, color, font, height, width,
position, stroke_color, replace, max_font_size) with appropriate types and
descriptions and include any relevant required fields so consumers of GET
/api/content/templates/{id} can fully reconstruct the edit pipeline; ensure the
property names exactly match those in ContentCreateEditRequest.operations to
keep schemas consistent.
---
Outside diff comments:
In `@api-reference/openapi.json`:
- Around line 5999-6049: The OpenAPI spec references missing schema definitions:
MusicComposeRequest, MusicComposeDetailedRequest, MusicStreamRequest,
MusicCreatePlanRequest, MusicCreatePlanResponse, and MusicErrorResponse; add
these schemas under components.schemas (or change the $ref targets to the
correct existing schema names) so the $ref entries in the endpoints resolve;
ensure each schema matches the expected request/response shapes (e.g.,
MusicComposeRequest, MusicComposeDetailedRequest, MusicStreamRequest for request
bodies and MusicCreatePlanResponse, MusicErrorResponse for responses) and update
any example/required fields accordingly.
- Around line 13660-13775: The ContentCreateEditRequest schema currently allows
an empty object; update the JSON Schema for ContentCreateEditRequest to enforce
the documented rules by adding an anyOf at the root that requires at least one
of the input URLs (video_url, image_url, audio_url), add an allOf group that
enforces "template OR operations" (use anyOf inside allOf: one branch requires
"template", the other requires "operations"), and add "minItems: 1" to the
operations array definition; ensure these constraints reference the existing
property names (video_url, image_url, audio_url, template, operations) so
validators and generated SDKs will reject invalid empty payloads.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 73f89d3e-16ff-4e4a-ab48-a179bf5710b3
📒 Files selected for processing (6)
api-reference/content/edit.mdxapi-reference/content/template-detail.mdxapi-reference/openapi.jsoncontent-agent.mdxcontent.mdxdocs.json
Resolve conflicts in docs.json and openapi.json by keeping both sides: - PR: Music endpoints, Content navigation, template-detail page - Main: Research endpoints/tab, reorganized navigation into 6 tabs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add cross-reference links to GET /api/content/templates in all template parameter descriptions so devs and AI can easily discover available options. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
api-reference/openapi.json (2)
14845-14959:⚠️ Potential issue | 🟠 MajorAdd structural constraints to enforce required inputs and conditional requirements.
The schema currently lacks
required,anyOf,oneOf, orallOfconstraints, so generated validators and SDKs will accept invalid bodies without at least one input URL or without properly handling thetemplate/operationsrelationship. Implement the OpenAPI 3.1 constraint pattern shown below:OpenAPI 3.1 constraint example
"ContentCreateEditRequest": { "type": "object", "description": "Must provide at least one input (video_url, image_url, or audio_url)", + "allOf": [ + { + "anyOf": [ + { "required": ["video_url"] }, + { "required": ["image_url"] }, + { "required": ["audio_url"] } + ] + }, + { + "anyOf": [ + { "required": ["template"] }, + { "required": ["operations"] } + ] + } + ], "properties": {If the backend requires exactly one of
templateoroperations(not both), change the secondanyOftooneOf.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 14845 - 14959, The schema for the edit request object (properties video_url, image_url, audio_url, template, operations, output_format) lacks structural constraints; add JSON Schema/OpenAPI keywords to enforce: (1) at least one input URL present by adding an anyOf that requires video_url or image_url or audio_url, and (2) a conditional that requires either template or operations by adding an oneOf (or anyOf if both allowed) with two alternatives: one requiring template and the other requiring operations (and ensure operations retains its required:type inside items). Update the object-level schema to include these anyOf/oneOf constraints so generated validators/SDKs reject bodies missing an input URL or missing/incorrect template↔operations usage.
5579-5583:⚠️ Potential issue | 🔴 CriticalRemove
callbackSecretfrom the security array at line 5581 or define it incomponents.securitySchemes.The
/api/content-agent/callbackendpoint declarescallbackSecretin its security requirements, but this scheme is not defined in the OpenAPI document'scomponents.securitySchemes. The document currently only definesapiKeyAuthandbearerAuth. This inconsistency violates the OpenAPI specification and will break OpenAPI validators, code generators, and documentation renderers. Either addcallbackSecrettocomponents.securitySchemesor remove it from this endpoint's security array.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 5579 - 5583, The security requirement for the /api/content-agent/callback path references an undefined scheme "callbackSecret"; fix this by either removing "callbackSecret" from the security array for that endpoint or by adding a corresponding entry named "callbackSecret" under components.securitySchemes with the proper type (e.g., apiKey or http bearer) and configuration; update the security array on the /api/content-agent/callback path or add the "callbackSecret" scheme in components.securitySchemes to restore consistency.
♻️ Duplicate comments (2)
api-reference/openapi.json (2)
13491-13495:⚠️ Potential issue | 🟠 MajorMake
ContentCreateResponse.templatenullable and optional.The request contract now documents
templateas optional for malleable-mode runs, but the response still requires a non-nulltemplate. As published, a successful template-free call cannot be represented.🔧 Suggested schema fix
"ContentCreateResponse": { "type": "object", "required": [ "runIds", "status", - "artist_account_id", - "template" + "artist_account_id" ], @@ "template": { - "type": "string", - "description": "The template being used", - "example": "artist-caption-bedroom" + "type": [ + "string", + "null" + ], + "description": "Template ID when a preset pipeline is used; null in malleable mode.", + "example": null },Also applies to: 13555-13560, 13586-13590
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 13491 - 13495, The response schema currently requires a non-null "template" but requests can omit it in malleable-mode; update the OpenAPI schemas so ContentCreateResponse.template is optional and nullable (i.e., allow null and remove "required" constraint), and apply the same change to any other response schemas referencing "template" (e.g., ContentCreateResponse variants found near the other occurrences). Locate the ContentCreateResponse object(s) and change the "template" property to include "nullable": true (or make it type ["string","null"]) and ensure it is not listed under "required" so a successful template-free response can be represented.
13790-13812:⚠️ Potential issue | 🟠 MajorExpose the full edit operation shape in
ContentTemplateDetail.
GET /api/content/templates/{id}currently returns edit operations with onlytype, whileContentCreateEditRequest.operationssupports the rest of the operation payload. Clients cannot reconstruct or inspect the advertised template edit pipeline from the detail endpoint as-is.Also applies to: 14867-14945
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 13790 - 13812, The ContentTemplateDetail response currently exposes only the operation "type" for the "operations" array; update the OpenAPI schema so ContentTemplateDetail.operations uses the full edit operation shape (matching ContentCreateEditRequest.operations) — either by referencing the same component schema or by expanding the "items" properties to include all fields (e.g., trim/crop/resize/overlay_text/mux_audio specific params) so the GET /api/content/templates/{id} detail endpoint accurately reflects the complete operation payload; apply the same change where the duplicate occurs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@api-reference/openapi.json`:
- Around line 4044-4108: The API currently exposes two equivalent edit
endpoints—PATCH /api/content and PATCH /api/content/video—creating duplicate
canonical routes; remove the legacy PATCH /api/content/video path from the
OpenAPI spec (or mark it deprecated and add a clear deprecation notice and a
reference pointing to PATCH /api/content) by deleting the /api/content/video
path object (or adding "deprecated": true plus a description directing callers
to "/api/content") and ensure any schemas (e.g., ContentCreateEditRequest,
ContentCreateEditResponse, ContentErrorResponse) referenced by
/api/content/video are either preserved elsewhere or updated to avoid dangling
refs; update any duplicate security/response blocks under the removed path
accordingly.
---
Outside diff comments:
In `@api-reference/openapi.json`:
- Around line 14845-14959: The schema for the edit request object (properties
video_url, image_url, audio_url, template, operations, output_format) lacks
structural constraints; add JSON Schema/OpenAPI keywords to enforce: (1) at
least one input URL present by adding an anyOf that requires video_url or
image_url or audio_url, and (2) a conditional that requires either template or
operations by adding an oneOf (or anyOf if both allowed) with two alternatives:
one requiring template and the other requiring operations (and ensure operations
retains its required:type inside items). Update the object-level schema to
include these anyOf/oneOf constraints so generated validators/SDKs reject bodies
missing an input URL or missing/incorrect template↔operations usage.
- Around line 5579-5583: The security requirement for the
/api/content-agent/callback path references an undefined scheme
"callbackSecret"; fix this by either removing "callbackSecret" from the security
array for that endpoint or by adding a corresponding entry named
"callbackSecret" under components.securitySchemes with the proper type (e.g.,
apiKey or http bearer) and configuration; update the security array on the
/api/content-agent/callback path or add the "callbackSecret" scheme in
components.securitySchemes to restore consistency.
---
Duplicate comments:
In `@api-reference/openapi.json`:
- Around line 13491-13495: The response schema currently requires a non-null
"template" but requests can omit it in malleable-mode; update the OpenAPI
schemas so ContentCreateResponse.template is optional and nullable (i.e., allow
null and remove "required" constraint), and apply the same change to any other
response schemas referencing "template" (e.g., ContentCreateResponse variants
found near the other occurrences). Locate the ContentCreateResponse object(s)
and change the "template" property to include "nullable": true (or make it type
["string","null"]) and ensure it is not listed under "required" so a successful
template-free response can be represented.
- Around line 13790-13812: The ContentTemplateDetail response currently exposes
only the operation "type" for the "operations" array; update the OpenAPI schema
so ContentTemplateDetail.operations uses the full edit operation shape (matching
ContentCreateEditRequest.operations) — either by referencing the same component
schema or by expanding the "items" properties to include all fields (e.g.,
trim/crop/resize/overlay_text/mux_audio specific params) so the GET
/api/content/templates/{id} detail endpoint accurately reflects the complete
operation payload; apply the same change where the duplicate occurs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 8134d4f4-cabc-4ba3-b975-c7c9adf1704c
📒 Files selected for processing (2)
api-reference/openapi.jsondocs.json
✅ Files skipped from review due to trivial changes (1)
- docs.json
Template Link VerificationTested all pages with
Merge conflict with 🤖 Generated with Claude Code |
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
api-reference/openapi.json (2)
5579-5583:⚠️ Potential issue | 🔴 CriticalBroken security reference:
callbackSecretis undefined.Line 5581 uses
callbackSecret, but there is no matching scheme incomponents.securitySchemes, so the OpenAPI document has an unresolved security reference.🔧 Suggested fix (add the missing scheme)
"securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" }, "apiKeyAuth": { "type": "apiKey", "in": "header", "name": "x-api-key", "description": "Your Recoup API key. [Learn more](/quickstart#api-keys)." + }, + "callbackSecret": { + "type": "apiKey", + "in": "header", + "name": "x-callback-secret", + "description": "Internal callback authentication secret." } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 5579 - 5583, The OpenAPI operation uses a security requirement named "callbackSecret" but no corresponding scheme exists in components.securitySchemes; add a new security scheme entry named "callbackSecret" under components.securitySchemes (e.g., an apiKey, http bearer, or other appropriate type) that matches how the operation expects to be authenticated, then reference that scheme name exactly ("callbackSecret") so the "security": [{"callbackSecret": []}] entry resolves correctly.
14846-14959:⚠️ Potential issue | 🟠 Major
ContentCreateEditRequestdocuments conditional requirements but does not enforce them.Line 14846 says at least one of
video_url | image_url | audio_urlis required, and Line 14969 saysoperationsis required iftemplateis absent. The schema currently permits{}.🔧 Suggested validation constraints
"ContentCreateEditRequest": { "type": "object", "description": "Must provide at least one input (video_url, image_url, or audio_url)", + "anyOf": [ + { "required": ["video_url"] }, + { "required": ["image_url"] }, + { "required": ["audio_url"] } + ], + "oneOf": [ + { "required": ["template"] }, + { "required": ["operations"] } + ], "properties": { ... "operations": { "type": "array", + "minItems": 1, "description": "Array of edit operations to apply in order. Required if template is not provided.", "items": { ... } } } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 14846 - 14959, The ContentCreateEditRequest schema allows an empty object but must require at least one input and enforce operations when template is absent; update the schema for ContentCreateEditRequest to add validation: include an "anyOf" requiring one of the inputs (video_url, image_url, audio_url) e.g. "anyOf":[{"required":["video_url"]},{"required":["image_url"]},{"required":["audio_url"]}] and add a mutual exclusivity/requirement for template vs operations by adding "oneOf":[{"required":["template"]},{"required":["operations"]}] (or "anyOf" if multiple combos needed) so that either "template" is present or "operations" is present; reference the properties video_url, image_url, audio_url, template, and operations when applying these constraints.
♻️ Duplicate comments (3)
api-reference/openapi.json (3)
13790-13811:⚠️ Potential issue | 🟠 Major
ContentTemplateDetail.edit.operationsis still lossy.Line 13790 only exposes
type; callers cannot reconstruct the template’s edit pipeline details from the detail endpoint.Use the same full operation shape as
ContentCreateEditRequest.operations.items(e.g.,start,duration,aspect,content,audio_url,color,font,height,width,position,stroke_color,replace,max_font_size) to keep contracts consistent.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 13790 - 13811, ContentTemplateDetail.edit.operations currently exposes only the "type" field, which is lossy; update the OpenAPI schema for ContentTemplateDetail.edit.operations.items to use the same full operation object schema as ContentCreateEditRequest.operations.items so callers can reconstruct the edit pipeline. Replace the minimal properties block (only "type") with the full properties used by ContentCreateEditRequest.operations.items (including fields like start, duration, aspect, content, audio_url, color, font, height, width, position, stroke_color, replace, max_font_size and any other operation-specific fields) and retain the required "type" enum; ensure the description and enum values stay unchanged so the contract is consistent.
13555-13560:⚠️ Potential issue | 🟠 Major
ContentCreateResponse.templatestill contradicts template-optional mode.Line 13559 requires
template, and Line 13587 allows only non-null string, so successful malleable/template-free runs cannot be represented.🔧 Suggested schema fix
"ContentCreateResponse": { "type": "object", "required": [ "runIds", "status", - "artist_account_id", - "template" + "artist_account_id" ], "properties": { ... "template": { - "type": "string", - "description": "The template being used", - "example": "artist-caption-bedroom" + "type": ["string", "null"], + "description": "Template ID when a preset pipeline is used; null in malleable mode.", + "example": null } } }Also applies to: 13586-13590
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 13555 - 13560, The schema currently forces ContentCreateResponse.template to be required and a non-null string, which breaks template-optional runs; remove "template" from the required array (alongside runIds/status/artist_account_id) and change the ContentCreateResponse.properties.template definition to allow absence/null (e.g., make it nullable or type ["string","null"] or simply omit "required" for template) so successful malleable/template-free responses can be represented; apply the same change to the duplicate schema instance referenced around the other occurrence of ContentCreateResponse.template.
4044-4108:⚠️ Potential issue | 🟠 MajorDeprecate or remove the legacy
PATCH /api/content/videoroute.Line 5915 still publishes
PATCH /api/content/videoalongside the new canonicalPATCH /api/content(Line 4044), which creates two first-class edit routes.🔧 Suggested fix (deprecate legacy route if it must remain temporarily)
"/api/content/video": { "patch": { + "deprecated": true, - "description": "Apply edits to a video or audio file — trim, crop, resize, overlay text, or add an audio track. Pass a `template` for a preset edit pipeline, or build your own with an `operations` array. Everything runs in one pass.", + "description": "Deprecated. Use PATCH /api/content. Apply edits to content — trim, crop, resize, overlay text, or add an audio track.", ... } }Also applies to: 5915-5978
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@api-reference/openapi.json` around lines 4044 - 4108, There are two first-class edit endpoints (PATCH /api/content and the legacy PATCH /api/content/video); remove or mark the legacy route as deprecated by deleting the /api/content/video operation or adding a deprecation notice and linking it to the canonical /api/content in the OpenAPI spec — update the operationId/path entry for PATCH /api/content/video (or remove it entirely), and if keeping it temporarily set "deprecated": true plus a description pointing to the canonical PATCH /api/content and re-use the same request/response schemas (ContentCreateEditRequest, ContentCreateEditResponse, ContentErrorResponse) to avoid divergence.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Outside diff comments:
In `@api-reference/openapi.json`:
- Around line 5579-5583: The OpenAPI operation uses a security requirement named
"callbackSecret" but no corresponding scheme exists in
components.securitySchemes; add a new security scheme entry named
"callbackSecret" under components.securitySchemes (e.g., an apiKey, http bearer,
or other appropriate type) that matches how the operation expects to be
authenticated, then reference that scheme name exactly ("callbackSecret") so the
"security": [{"callbackSecret": []}] entry resolves correctly.
- Around line 14846-14959: The ContentCreateEditRequest schema allows an empty
object but must require at least one input and enforce operations when template
is absent; update the schema for ContentCreateEditRequest to add validation:
include an "anyOf" requiring one of the inputs (video_url, image_url, audio_url)
e.g.
"anyOf":[{"required":["video_url"]},{"required":["image_url"]},{"required":["audio_url"]}]
and add a mutual exclusivity/requirement for template vs operations by adding
"oneOf":[{"required":["template"]},{"required":["operations"]}] (or "anyOf" if
multiple combos needed) so that either "template" is present or "operations" is
present; reference the properties video_url, image_url, audio_url, template, and
operations when applying these constraints.
---
Duplicate comments:
In `@api-reference/openapi.json`:
- Around line 13790-13811: ContentTemplateDetail.edit.operations currently
exposes only the "type" field, which is lossy; update the OpenAPI schema for
ContentTemplateDetail.edit.operations.items to use the same full operation
object schema as ContentCreateEditRequest.operations.items so callers can
reconstruct the edit pipeline. Replace the minimal properties block (only
"type") with the full properties used by
ContentCreateEditRequest.operations.items (including fields like start,
duration, aspect, content, audio_url, color, font, height, width, position,
stroke_color, replace, max_font_size and any other operation-specific fields)
and retain the required "type" enum; ensure the description and enum values stay
unchanged so the contract is consistent.
- Around line 13555-13560: The schema currently forces
ContentCreateResponse.template to be required and a non-null string, which
breaks template-optional runs; remove "template" from the required array
(alongside runIds/status/artist_account_id) and change the
ContentCreateResponse.properties.template definition to allow absence/null
(e.g., make it nullable or type ["string","null"] or simply omit "required" for
template) so successful malleable/template-free responses can be represented;
apply the same change to the duplicate schema instance referenced around the
other occurrence of ContentCreateResponse.template.
- Around line 4044-4108: There are two first-class edit endpoints (PATCH
/api/content and the legacy PATCH /api/content/video); remove or mark the legacy
route as deprecated by deleting the /api/content/video operation or adding a
deprecation notice and linking it to the canonical /api/content in the OpenAPI
spec — update the operationId/path entry for PATCH /api/content/video (or remove
it entirely), and if keeping it temporarily set "deprecated": true plus a
description pointing to the canonical PATCH /api/content and re-use the same
request/response schemas (ContentCreateEditRequest, ContentCreateEditResponse,
ContentErrorResponse) to avoid divergence.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: dd3d8f09-e75e-4f9f-9b04-ff0d93ea3245
📒 Files selected for processing (1)
api-reference/openapi.json
Consolidated the orphaned content.mdx (primitives, templates, video modes, iteration guide) into content-agent.mdx and renamed the page title to "Content". Deleted content.mdx since it wasn't in the navigation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1. ContentCreateResponse: remove template from required, allow null 2. ContentTemplateDetail: add full operation properties to edit schema 3. Remove duplicate PATCH /api/content/video (keep PATCH /api/content) 4. Add missing Music schemas (MusicComposeRequest, MusicComposeDetailedRequest, MusicStreamRequest, MusicCreatePlanRequest, MusicCreatePlanResponse, MusicErrorResponse) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
/videoto/content, renamed ContentTemplatename→id, droppeddefaultLipsync, added template field to video/image/text schemas, addedGET /api/content/templates/{id}detail endpoint, made pipeline template optional, removed V1 artifactscontent.mdx— malleable-first philosophy, primitives table, curl examples, architecture diagram, video modes, iteration guidanceTest plan
npx mintlify@latest devMade with Cursor
Summary by CodeRabbit
New Features
Documentation