API quickstart
Base URL https://api.ollanode.com. Every request is scoped to your project by the bearer token.
1 ยท Authenticate
Exchange username/password for a bearer session token (12h). Use it as Authorization: Bearer <token> on every call. Machine clients use an API key instead (Settings โ API Keys).
curl -X POST https://api.ollanode.com/v1/auth/login \
-H 'content-type: application/json' \
-d '{"username":"demo","password":"********"}'
# โ { "token": "...", "user": { ... } } 2 ยท Create a video
Create a record (then upload), or pass source_url to ingest from the web automatically.
curl -X POST https://api.ollanode.com/v1/videos \
-H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
-d '{"title":"launch.mp4","source_url":"https://.../launch.mp4"}' 3 ยท Direct upload
For local files: request a presigned URL, PUT the bytes, then mark it complete.
# 1) presigned target
curl -X POST https://api.ollanode.com/v1/videos/$VIDEO_ID/upload-url \
-H "authorization: Bearer $TOKEN" -d '{"content_type":"video/mp4"}'
# 2) upload the bytes
curl -X PUT "$PRESIGNED_URL" -H 'content-type: video/mp4' --data-binary @launch.mp4
# 3) start processing
curl -X POST https://api.ollanode.com/v1/videos/$VIDEO_ID/upload-complete -H "authorization: Bearer $TOKEN" 4 ยท Play it back
When status is "ready", fetch a playback URL (token-gated for signed videos) or embed the player.
curl https://api.ollanode.com/v1/videos/$VIDEO_ID/playback -H "authorization: Bearer $TOKEN"
# โ { "master_url": "...m3u8", "token": "...", "subtitles": [...] }
<iframe src="https://api.ollanode.com/embed/$VIDEO_ID?token=$TOKEN"></iframe> 5 ยท Webhooks
Subscribe to events (video.asset.ready, video.asset.errored). Deliveries are HMAC-signed and retried.
curl -X POST https://api.ollanode.com/v1/webhooks \
-H "authorization: Bearer $TOKEN" -H 'content-type: application/json' \
-d '{"url":"https://you/hook","events":["video.asset.ready"]}' Full endpoint reference: videos, zones (CDN), api-keys, users, webhooks, analytics, usage โ all under /v1.