From no account to a rendered video in about five minutes, with a free test key that never spends credits.
You will create a project, put a title on its timeline and render it. With a test key the render comes back at once as a sample file and nothing is charged, so you can wire up the whole integration before anything costs money.
1
Create an app and a test key
Sign in at developer.vidmoat.com, register an app, and create a test key. Pick the Build & render preset: it carries projects.write, media.write and render.write on top of the read scopes.
The key is shown once. Copy it and keep it on your server, never in browser code.
credential.environment should say test, and credential.scopes lists what the key carries.
3
Run the quickstart
Each version creates a project, adds a three-second title, queues a render and polls it until it finishes. They stop on the first HTTP error and never queue the render twice.
quickstart.sh
# Requires Bash, curl and jq. Keep the key on your server.
set -euo pipefail
export VIDMOAT_KEY="YOUR_TEST_OR_LIVE_KEY"
BASE="https://api.vidmoat.com/v1"# Test keys still create and edit real projects. Renders are sample fixtures.
ID=$(curl --fail-with-body -sS -X POST "$BASE/projects"\ -H"Authorization: Bearer $VIDMOAT_KEY"\ -H"Content-Type: application/json"\ -d'{"name":"Hello, Vidmoat API"}' | jq -er'.project.id')
curl --fail-with-body -sS -X POST "$BASE/projects/$ID/commands"\ -H"Authorization: Bearer $VIDMOAT_KEY"\ -H"Content-Type: application/json"\ -d'{"commands":[{"op":"addTextClip","text":"Hello","start":0,"duration":3}]}'
JOB=$(curl --fail-with-body -sS -X POST "$BASE/renders"\ -H"Authorization: Bearer $VIDMOAT_KEY"\ -H"Content-Type: application/json"\ -d"{\"projectId\":\"$ID\"}" | jq -er'.render.id')
# Stop on errors; do not retry a render POST after an uncertain timeout.
for i in $(seq 1 120); do
RESULT=$(curl --fail-with-body -sS"$BASE/renders/$JOB"\ -H"Authorization: Bearer $VIDMOAT_KEY")
STATUS=$(printf '%s'"$RESULT" | jq -er'.render.status')
case "$STATUS" in
COMPLETED) printf '%s'"$RESULT" | jq -er'.render.url'; exit 0 ;;
FAILED|CANCELLED) printf '%s\n'"$RESULT" >&2; exit 1 ;;
esac
sleep 5
done
echo "Still processing after 10 minutes. Resume polling $JOB; do not queue it again." >&2
exit 1
4
Read the result
With a test key the render is COMPLETED immediately, with test: true and a sample video url. The project and its title are real: open the project in the Vidmoat editor to see them.
5
Go live
When the plumbing is right, create a live key (it needs a plan with live API access and an app approved in review) and swap it in. The same code now queues a real render against your export allowance. Before you ship, add a webhook for render.completed instead of polling, and read errors and retries.