Your first test should answer one question: can your application use the media Tornado delivers? Start with a single source and keep its job ID, output and usage together. Once that path works, you can automate it.
1. Test the output in the dashboard
Sign in to the dashboard and complete the onboarding shown for your account. Review its allowance, rate and payment conditions before submitting work. Trial availability and account limits are shown in that flow.
Choose one supported media URL that you are allowed to process. Submit a job from the dashboard with the output your next step needs. For an editor, that might be a video file. For transcription, it might be audio. Begin with a full file; add clipping or other options after you have a result to compare.
Open Jobs to follow the request. When it completes, inspect the result and open the delivered media. Check its duration, format and destination. If it does not complete, read the recorded reason before trying again. Then review Usage and, where your role allows it, Billing.
2. Keep the API key on your server
Open API keys in the dashboard and create or retrieve the key for your integration. Your dashboard login and your API key serve different purposes: your server authenticates API requests with the x-api-key header.
Store the key in your server's secret configuration. Do not put it in a browser bundle, a public repository or a screenshot. Use the key associated with the account and delivery settings you tested.
3. Create one API job
Set TORNADO_API_KEY in your environment, then replace the example source below with your own supported URL. This example creates an MP4 job with a maximum requested resolution of 720p; the actual output depends on the source.
curl --fail-with-body https://api.tornadoapi.io/jobs \
-H "x-api-key: $TORNADO_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"url": "https://www.youtube.com/watch?v=YOUR_VIDEO_ID",
"format": "mp4",
"max_resolution": "720"
}'
For a single media item, the response contains a job_id. Save that value with your application's own request identifier. The API processes the job asynchronously; receiving an ID does not mean the file is ready.
4. Follow the job to a final outcome
Set TORNADO_JOB_ID to the returned ID and read the job:
curl --fail-with-body \
"https://api.tornadoapi.io/jobs/$TORNADO_JOB_ID" \
-H "x-api-key: $TORNADO_API_KEY"
Wait between status checks and give your application a finite waiting deadline. Pending and Processing mean there is more work to do. Completed is the successful final state. Handle Failed, Warning, Skipped, Cancelled and CancelledByAdmin as separate final outcomes; do not keep polling them as if they were still processing.
Inspect the result rather than constructing a file URL yourself. The response may provide a delivery URL in s3_url, including for supported destinations other than S3. Its availability depends on the destination and access configuration. Our storage guide explains what to do when the file exists but a link is unavailable or expired.
5. Connect the next step
Only start the downstream work once you have a successful result and usable media. For example, pass the audio file to your transcription service, or let your editor import the delivered video. Keep the source URL, job ID and destination reference with that downstream record.
When you add webhooks, use the event contract for your chosen integration and make your receiver tolerate repeated notifications. Keep a status lookup as a recovery path when a notification is missed. A webhook delivery failure and a media-processing failure are different events.
Before you submit a larger batch
Try representative short and long sources, the output modes you need and your intended storage destination. Compare the delivered files with Usage. Audio and clips can be subject to a full-source billing reference, so file size alone is not a complete cost estimate.
Read the usage guide and failure guide, then use the API reference for request options and batch-specific response shapes.