Give your model something to read about every file.
Language models cannot open a video, a recording or a photo. Upload one, say which of the six types it is, and get back its sidecar: everything about the file as text, measured where a number can be measured, observed where a model looked, never an opinion.
Four calls
Nothing to install: curl is the whole client. Async by design: the estimate is held on your balance when the job is accepted, and settled or released when it ends. Poll the job or give a webhook URL.
# 1. an upload URL
curl -X POST https://api.smartmediaprotocol.com/v1/uploads -H "Authorization: Bearer sm_live_…" \
-H "Content-Type: application/json" -d '{"filename":"IMG_1731.MOV","bytes":61230411}'
# 2. the file
curl -X PUT "$UPLOAD_URL" -H "Content-Type: video/quicktime" --data-binary @IMG_1731.MOV
# 3. the analysis, with the type you declare
curl -X POST https://api.smartmediaprotocol.com/v1/analyses -H "Authorization: Bearer sm_live_…" \
-H "Content-Type: application/json" -d '{"upload_id":"up_…","type":"video/footage"}'
# 4. the sidecar, once the job is done
curl "https://api.smartmediaprotocol.com/v1/analyses/an_…/result?format=smartmedia" -H "Authorization: Bearer sm_live_…" \
-o IMG_1731.MOV.smartmediaThe result comes in three formats: the smartmedia document, the full internal analysis as JSON, and a plain-text rendering for a language model.
What it measures, what it observes
Each type's page on the protocol says which fields are which. In short:
Video
ffmpeg for the file, cuts and loudness; OpenCV keypoints for camera support, pans, tilts, zooms and punch-ins; pixel statistics for colour and tone; a video model for form, people, activities, actions and on-screen text; Deepgram for words and speakers; librosa and ACRCloud for the music.
Audio
The samples for loudness, noise floor, dynamic range, clipping and an overview waveform; ffmpeg for silences; Deepgram for words, sentences, paragraphs and speakers; a language model for the voices as people and a summary; librosa for tempo, key and beats; ACRCloud for which recording it is.
Images
The file's own metadata for camera, lens, exposure, capture time and GPS; pixel statistics for palette, tone and sharpness; a vision model for kind, form, composition, people and objects with boxes, every piece of text, and the quality conditions visibly there.
One price per type
Prepaid credit that never expires. A failed job is never charged. The same file as the same type is free the second time. Every price is on the estimate endpoint before you run a job, and there are monthly spend caps per key and per account.
| type | price | minimum per job |
|---|---|---|
| video/footage, video/edit | 20¢ per minute | 20¢ |
| audio/speech | 6¢ per minute | 5¢ |
| audio/music | 2¢ per minute | 2¢ |
| image/scene, image/graphic | 3¢ per image | 3¢ |
Limits. Ten minutes and 300 MB per file; videos at most 1280 px on the long side. Larger videos go up as a proxy, and the API is told about the original.
Consolidation. For a video, one readable paragraph per shot from a second model pass, 5¢ per minute more.
New accounts start with $5 of credit. Packs are bought on the dashboard; a refund debits the balance.
Every type, one endpoint
You declare the type with the request; the API never guesses it from the content.