Quickstart

Copy this path when you want the shortest working integration: create a project, upload one video to Nandemo, retrieve understanding, then ask Dekiru through chat.

Setup

Project endpoints use x-api-key. Preview deployments may also need the Vercel bypass header from the Zonic team.

The examples use a shared base URL and JSON headers. Uploading video bytes is the exception: signed upload URLs may return their own headers, and those headers should be sent exactly as provided.

API_KEY="<your-api-key>"
BASE_URL="https://zonic.tech/api"
AUTH=(-H "x-api-key: $API_KEY" -H "Content-Type: application/json")

Examples below use curl and browser or Node-style JavaScript. Any HTTP client works as long as it preserves signed upload headers exactly.

Create Project

POST/api/projects

A project groups everything that should be understood together. Put footage that belongs to the same editing or review workflow in one project so search, people detection, chat, and sequence generation can use the full shared context.

PID=$(curl -s -X POST "$BASE_URL/projects" \
"${AUTH[@]}" \
-d '{"title":"Platform analysis demo"}' | jq -r '.project.pid')

Register And Upload

POST/api/projects/{pid}/videos

Register first. Accepted videos return signed upload URLs and upload headers. Send those headers exactly when you PUT the file bytes.

REGISTER=$(curl -s -X POST "$BASE_URL/projects/$PID/videos" \
"${AUTH[@]}" \
-d '{"videos":[{"name":"interview.mp4","duration":183.4}]}')
UPLOAD_URL=$(echo "$REGISTER" | jq -r '.validation[0].url')
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/octet-stream" \
--upload-file ./interview.mp4

Analyze

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

Cloud uploads usually trigger analysis automatically. Call this endpoint to explicitly run or rerun analysis.

Full analysis builds the source's Nandemo understanding. The pipeline detects scenes, transcribes speech when audio exists, describes visual content, extracts metadata, indexes text and visual descriptions for search, and updates people or speaker records when those jobs are available.

VID=$(python3 - <<'PY'
from urllib.parse import quote
print(quote("interview.mp4", safe=""))
PY
)
curl -X POST "$BASE_URL/projects/$PID/videos/$VID/analysis" \
"${AUTH[@]}" \
-d '{"context_hint":"Interview from a product launch event"}'

Read Outputs

GET/api/projects/{pid}/understanding

Understanding is the best first read after analysis finishes. It gives your integration the timeline-level structure needed to render scene cards, show searchable moments, or pass evidence into your own workflow.

curl "$BASE_URL/projects/$PID/understanding" \
-H "x-api-key: $API_KEY" | jq '.data["interview.mp4"][0]'

Ask Dekiru

POST/api/projects/{pid}/chat

Chat is the user-facing surface for both footage QA/VQA and editing requests. Dekiru can fetch the relevant Nandemo evidence, answer a question, or produce an edit sequence from the same endpoint.

curl -N -X POST "$BASE_URL/projects/$PID/chat" \
"${AUTH[@]}" \
-d '{"message":"Which clips show a close-up product demo?"}'