Cookies keep FreeInd working. Optional analytics require your permission; ads for free accounts are served by Google, which shows its own consent message where required. Read our cookie policy.
Upload a frame or a clip and turn its look and shot structure into a runnable free.flow — with a master subject slot you can swap for every variation.
The analysis produces a workspace template: a free.flow workflow graph plus editable slots. The graph carries the reference’s visual language — camera, lens, lighting, palette, grade — and, for video, one step per shot with the reference’s pacing. Every step prompt is built around a {{subject}} placeholder, so changing the subject changes the video instead of decorating the same person.
Drafts are private
Templates declare text flow inputs. Exactly one is primary: subject, prefilled from the reference with a generic description (age range, build, hair, wardrobe) — never a name, brand, or identity instruction. Every shot prompt references it.
{
"subject": { "text": "a woman in her late 20s, denim jacket" },
"location": { "text": "a neon-lit street after rain" },
"action": { "text": "walks toward the camera" }
}Media inputs use assetIds (or urls) instead of text. A value carries either media or text, never both.
Prompts may also reference earlier text steps with {{nodeId}}. Tokens are resolved in a single pass: a slot value is inserted verbatim and never re-scanned, so text containing {{…}} cannot pull another step’s output into the prompt.
Analysis is metered on real usage, not a flat fee: the prompt and completion tokens of every vision call (including a repair pass), priced with the analyzer model’s rates and the platform margin. A hold is reserved up front from a token estimate; the actual charge is settled afterwards and the difference refunded. Failed or cancelled analyses are refunded in full.
Pacing is approximate
curl -X POST https://free.ind.in/v1/reference/analyses \
-H "Authorization: Bearer fi_live_..." \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "00000000-0000-4000-8000-000000000000",
"assetId": "00000000-0000-4000-8000-000000000002",
"options": {
"keepLook": true,
"keepStructure": true,
"maxShots": 3,
"includeMusic": false,
"subjectMode": "text"
}
}'POST /v1/reference/quote — estimated and maximum credits, plus whether a cached template already exists.POST /v1/reference/analyses — reserves the hold, queues the job, returns { workflowId, status: "queued" }.GET /v1/reference/analyses/:workflowId — status, warnings, token usage, credits. Poll while queued or running.POST /v1/reference/analyses/:workflowId/cancel — cancels and refunds.POST /v1/reference/analyses/:workflowId/retry — retries a failed or cancelled analysis at the current price.POST /v1/workflows/:workflowId/activate — validates models and parameters, screens prompts, and makes the template adoptable.GET /v1/workflows/templates?scope=builtin|workspace|all — the public library, your workspace templates, or both.POST /v1/workflows with { templateId } — copies a template into an editable flow.curl -X POST https://free.ind.in/v1/workflows/<workflow-id>/runs \
-H "Authorization: Bearer fi_live_..." \
-H "Content-Type: application/json" \
-d '{
"workspaceId": "00000000-0000-4000-8000-000000000000",
"input": {
"subject": { "text": "a man in his 50s with a linen shirt" },
"location": { "text": "a sunlit rooftop at golden hour" }
}
}'Built-in templates ship with the platform. Admins can also promote a finished workspace template to the public library (it appears under Templates → Built-in for every workspace), and retire it later without deleting the original.
Opt-in
reference_enabled feature flag. Until an admin enables it, the studio and the reference endpoints return a clear “not enabled” response.