JavaScript
const response = await fetch('https://api.saliencylab.com/v1/analyses', {
method: 'POST',
headers: { Authorization: 'Bearer sl_live_xxx' },
body: formData,
});
const { data } = await response.json();
const jobId = data.job_id;Public API
Async creative analysis, benchmark lookup, creative driver summaries, and webhook delivery. Test keys always return fixtures, live keys are workspace-scoped, and every submission stays job-backed.
const response = await fetch('https://api.saliencylab.com/v1/analyses', {
method: 'POST',
headers: { Authorization: 'Bearer sl_live_xxx' },
body: formData,
});
const { data } = await response.json();
const jobId = data.job_id;import requests
response = requests.post(
'https://api.saliencylab.com/v1/analyses',
headers={'Authorization': 'Bearer sl_live_xxx'},
files={'file': open('ad.mp4', 'rb')},
data={'platform': 'youtube', 'market': 'US'},
)Send either Authorization: Bearer sl_live_xxx or x-api-key: sl_live_xxx. Test keys start with sl_test_ and return deterministic fixtures without consuming quota.
Webhook receivers should verify X-SaliencyLab-Signature against the raw JSON payload using the one-time signing secret returned with the submission.
POST
Submit one asset and receive a job id immediately.
GET
Poll for status or fetch the completed analysis result.
POST
Submit up to 50 assets in one batch.
GET
Read benchmark stats for a category/platform/market slice.
GET
Read creative attribute drivers for a slice.
DELETE
Delete a saved analysis and linked assets.
When a webhook URL is supplied, SaliencyLab posts the completed analysis payload back to your server.
const signature = req.headers['x-saliencylab-signature'];
const computed = hmacSHA256(req.body, webhookSecret);
if (signature !== computed) {
return 401;
}Delivery is retried up to three times with backoff. Batch callbacks fire once after every job in the batch has completed.