Docs / Getting started

Quickstart

Create a video, upload the file, wait for processing, and play it back — the whole control-plane loop in a few calls. Grab an API key from the dashboard under API Keys first.

1. Set your key

Every call carries a bearer credential. Export it once:

shell
export OLLANODE_API_KEY="vbk_..."

2. Create a video

Register the video first — this returns a vid_… id (and a one-time upload_token for resumable uploads). playback_policy defaults to signed; pass "public" for a shareable, token-free video.

curl
curl -X POST https://api.ollanode.com/v1/videos \
  -H "Authorization: Bearer $OLLANODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"My first video","playback_policy":"signed"}'
# -> { "id": "vid_7Qk3...", "status": "created", "upload_token": "..." }

3. Upload the file

Mint a presigned PUT URL and upload the bytes directly to object storage (they never pass through the API). For large files use multipart or resumable TUS instead.

curl
# 1) mint a presigned PUT URL
curl -X POST https://api.ollanode.com/v1/videos/vid_7Qk3.../upload-url \
  -H "Authorization: Bearer $OLLANODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content_type":"video/mp4"}'
# -> { "url": "https://...presigned...", "source_key": "...", "expires_in": 3600 }

# 2) upload the file straight to that URL
curl -X PUT --upload-file ./movie.mp4 -H "Content-Type: video/mp4" "<url from above>"

4. Finalize the upload

Commit the source and kick off the pipeline. (Multipart uploads start the pipeline on complete, so they skip this step.)

curl
curl -X POST https://api.ollanode.com/v1/videos/vid_7Qk3.../upload-complete \
  -H "Authorization: Bearer $OLLANODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"size_bytes": 52428800}'
# -> { "id": "vid_7Qk3...", "status": "uploaded" }

5. Poll until ready

Processing runs asynchronously through the VOD pipeline (validate → transcode → HLS → thumbnails → transcript → …). Poll the cheap status endpoint for live progress.

curl
curl https://api.ollanode.com/v1/videos/vid_7Qk3.../status \
  -H "Authorization: Bearer $OLLANODE_API_KEY"
# -> { "id": "vid_7Qk3...", "status": "processing", "progress": 63 }
# poll until status == "ready"

6. Get a playback URL

Once ready, ask for a playback URL. For a signed video this mints a short-lived HMAC token and appends it to the private-origin HLS manifest.

curl
curl https://api.ollanode.com/v1/videos/vid_7Qk3.../playback \
  -H "Authorization: Bearer $OLLANODE_API_KEY"
# -> { "master_url": ".../manifest?token=...", "token": "...", "policy": "signed",
#      "expires_at": "...", "poster_url": "...", "subtitles": [] }

7. Embed the player

Drop the hosted Vidstack player into any page — quality selector, storyboard scrubbing, chapters and captions are pre-wired.

html
<iframe
  src="https://<playback-host>/embed/vid_7Qk3...?token=<token>"
  allow="autoplay; fullscreen"
  style="border:0;width:100%;aspect-ratio:16/9"></iframe>

Shortcut: pull-from-URL

Already have the file on a public URL? Skip steps 3–4 entirely — pass source_url on create and the platform fetches and processes it for you.

curl
curl -X POST https://api.ollanode.com/v1/videos \
  -H "Authorization: Bearer $OLLANODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Imported","source_url":"https://cdn.example.com/master.mp4"}'
Next: Videos & ingest for every upload path, Processing & AI for the transcode ladder and transcripts, and Playback & delivery for signed tokens and the embed player.