Most application workflows need structured evidence first and finished media second. ChatClipThat keeps those operations separate so you can search, rank, review, and store Moment JSON without rendering every candidate.
1. Complete an analysis before rendering
Use POST /v1/analyses for a separate one-off brief, poll GET /v1/analyses/{analysis_id} until it is terminal, then fetch GET /v1/analyses/{analysis_id}/moments. Do not use the lifecycle analysis_id attached to a visual scanner run: scanner executions are JSON-only and do not expose renderable Moment IDs.
GET /v1/analyses/ana_.../moments
Authorization: Bearer $CCT_API_KEY
{
"analysis_id": "ana_...",
"moments": [
{
"moment_id": "mom_...",
"start_ms": 84210,
"end_ms": 109440,
"title": "Repeated setup failure"
}
]
}
2. Put a real selection boundary in front of media work
Choose one to twenty Moment IDs from the same completed analysis. Selection can be a human approval, a product policy, or a deterministic threshold appropriate to your use case. Do not treat an observation ID as a Moment ID, and do not combine Moment IDs from different analyses.
3. Read capabilities instead of guessing
Call GET /v1/render-presets before presenting output settings. It returns supported aspect ratios, format, caption presets, bundled fonts, effects, and bounded editor controls. Keep a short-lived local cache, but let the live response—not hard-coded UI options—define valid requests.
4. Submit one idempotent render request
POST /v1/renders
Authorization: Bearer $CCT_API_KEY
Idempotency-Key: review-item-928-render-v1
Content-Type: application/json
{
"analysis_id": "ana_...",
"moment_ids": ["mom_..."],
"render": {
"output": {"format": "mp4", "aspect_ratio": "9:16"},
"captions": {"enabled": true, "preset_id": "cct_clean_v1"}
}
}
Persist the returned render ID immediately. A stable idempotency key protects a retry after a client timeout from intentionally creating another render operation.
5. Poll, publish, and retain intentionally
Poll GET /v1/renders/{render_id} every 5–10 seconds with jitter and stop on completed or failed. Copy completed output into your authorized publishing or review system according to the retention limit shown for your account. Do not expose bearer keys, source URLs, or signed output URLs in client logs.
Credit behavior
Analysis costs one credit per started source minute from the shared ChatClipThat wallet. Status polling, Moment JSON, render history, presets, and rendering are included without another API credit charge. Account-specific processing and retention limits remain visible in Console → Usage.