Analysis Outputs

Build your own frontend experience from Nandemo's raw analysis outputs: source names, scene understanding, transcript words, people, speakers, metadata, and search results.

List Videos

GET/api/projects/{pid}/videos

This is the low-level footage inventory. Use returned names as the source identifiers in later calls.

A source can exist before every analysis job has completed, so list results should be treated as inventory plus status. Use this endpoint to populate source pickers, check whether a file is known to the project, and decide which source name to pass into source-scoped endpoints.

curl "$BASE_URL/projects/$PID/videos?q=interview" \
-H "x-api-key: $API_KEY"

Scene Understanding

GET/api/projects/{pid}/understanding

Use project understanding for timeline browsing, shot search UIs, scene cards, or timeline-level summaries.

Scene understanding is Zonic's visual timeline model. For each video source, Nandemo separates the file into multiple scenes, gives each scene a start and end time, and attaches visual descriptions or structured observations to that time range. The result is an ordered scene list that represents the whole video as smaller, searchable moments.

Applications usually render scene understanding as cards, timeline blocks, or search results. Dekiru uses the same scene records as evidence when it answers questions or chooses clips for a sequence.

curl "$BASE_URL/projects/$PID/understanding" \
-H "x-api-key: $API_KEY"

Transcript And Words

Word-level timestamps are useful when your UI needs precise in/out points. Segment merge, split, and speaker assignment endpoints can support transcript correction workflows.

Transcript outputs describe what was spoken and when it was spoken. Segment-level transcript is easier to read, while word-level timing is better for accurate subtitle alignment, quote selection, jump-to-word interactions, and edit decisions that need exact boundaries.

Videos without speech may have no transcript output. In that case, visual scene understanding and metadata can still be valid Nandemo results.

GET/api/projects/{pid}/videos/{vid}/words
curl "$BASE_URL/projects/$PID/videos/$VID/words?start=0&end=30" \
-H "x-api-key: $API_KEY"

People And Speakers

POST/api/projects/{pid}/videos/{vid}/faces

Face detection is a pass over the scenes analysis already produced, so it is a separate call rather than one of the analysis jobs. Run it per video once POST /api/projects/{pid}/videos/{vid}/analysis has completed for that video. Called before scenes exist, it has nothing to sample and returns without detecting anything.

Detected faces merge into one project-wide registry, so run one video at a time rather than in parallel. The request stays open for the whole pass, which on long footage can outlive a client timeout while the work carries on — confirm the result with GET /api/projects/{pid}/people instead of treating a timeout as a failure.

for VID in "${VIDS[@]}"; do
curl -X POST "$BASE_URL/projects/$PID/videos/$VID/faces" \
-H "x-api-key: $API_KEY"
done
GET/api/projects/{pid}/people

The people registry returns detected face clusters and their appearances. Speaker cluster rename and merge endpoints are also available for diarized transcript cleanup.

People and speakers are related but not identical. Face detection groups visual appearances across footage. Speaker diarization groups voices in transcript context. A product can expose rename or merge controls when users need clean labels, but read-only integrations can still use the clusters to show where a person appears or speaks.

curl "$BASE_URL/projects/$PID/people" \
-H "x-api-key: $API_KEY"