List stored Ads
/v1/trackers/{id}/adsEvery Ad stored for this Advertiser Tracker, paused too, with no Run: stopped and removed Ads included, newest start first, unknown starts last. Filters skip Ads with no value. Other kinds answer unsupported_kind.
Each Ad carries analysis { summary, hook_type, angle, offer_type, format }, or null. The analysis filters skip Ads with none.
Price
Free.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
id | path | string | Required | — | Tracker id. |
status | query | string one of active, inactive, all | Optional | all | inactive includes removed Ads. Only all keeps Ads whose state is unknown. |
country | query | string | Optional | — | ISO-2. Matches the newest observation that named countries. Meta names none for commercial Ads, so those never match. |
started_after | query | string | Optional | — | ISO date, inclusive. |
started_before | query | string | Optional | — | ISO date, exclusive. |
stopped_after | query | string | Optional | — | ISO date, inclusive. |
stopped_before | query | string | Optional | — | ISO date, exclusive. |
media_type | query | string one of video, image, carousel | Optional | — | The Ad's format. |
hook_type | query | string one of QUESTION, BOLD_CLAIM, PROBLEM, STORY, DEMONSTRATION, LISTICLE, CONTROVERSY, SOCIAL_PROOF, CURIOSITY_GAP, DIRECT_ADDRESS, NONE | Optional | — | Image Ads have no hook, so they never match. |
angle | query | string one of PROBLEM_SOLUTION, BENEFIT, SOCIAL_PROOF, SCARCITY_URGENCY, PRICE_VALUE, AUTHORITY, CURIOSITY, TRANSFORMATION, FEAR_OF_MISSING_OUT, COMPARISON, STORY, ANNOUNCEMENT, OTHER | Optional | — | Video Ads analysed before this field never match. |
offer_type | query | string one of DISCOUNT, FREE_TRIAL, FREE_SHIPPING, FREE_GIFT, BUNDLE, LIMITED_TIME, GUARANTEE, LEAD_MAGNET, NONE | Optional | — | NONE is an Ad with no offer found. Video Ads analysed before this field never match. |
format | query | string one of TALKING_HEAD, VOICEOVER_BROLL, SCREEN_RECORDING, TUTORIAL, UNBOXING, BEFORE_AFTER, SKIT, VLOG, SLIDESHOW, GREEN_SCREEN, SPLIT_SCREEN, COMPILATION, PRODUCT_DEMO, OTHER, PRODUCT_SHOT, LIFESTYLE, UGC_STYLE, TESTIMONIAL, INFOGRAPHIC, TEXT_ONLY, MEME, SCREENSHOT, COLLAGE, ILLUSTRATION | Optional | — | The production format, on image and video Ads. |
min_days_running | query | integer min 0; max 99999 | Optional | — | Least days_running. A removed Ad's days end at its removal when no stop date was read. A stopped Ad with no stop or removal date has none, so it never matches. |
include | query | string one of intelligence | Optional | — | intelligence adds each Ad's full analysis. |
limit | query | integer min 1; max 100 | Optional | 25 | Items per page. |
cursor | query | string | Optional | — | Opaque next_cursor from the previous page. |
Responses
200 OK
{ items, next_cursor }.
object
A page of a list. items holds the page; pass next_cursor back as cursor for the next one.
next_cursorstring required nullable Pass back ascursor. Null on the last page.itemsarray of object requiredlibrarystring required one ofmeta,tiktok,googleidstring requiredurlstring required nullableadvertiserobject requiredidstring required nullablenamestring required nullable
is_activeboolean required nullable False once stopped or removed. Null when no observation says.first_shownstring required nullablelast_shownstring required nullableplacementsarray of string requiredcreativeobject requiredtitlestring required nullablebodystring required nullablectastring required nullablelink_urlstring required nullableformatstring required nullableimage_urlsarray of string requiredvideo_urlsarray of string requiredthumbnail_urlsarray of string required
reachobject required Ranges as the library reports them, never coerced. Meta discloses spend and impressions for political and issue Ads, and reach (audience) for some EU Ads; otherwise null. TikTok reportsaudience(a bucket such as10K-100K);spendis null, andimpressionsis null except on a single-Ad lookup.impressionsstring required nullablespendstring required nullablecurrencystring required nullableaudiencestring required nullable
kindstring nullable one ofcommercial,political,issueMeta and Google.media_typestring required nullable one ofvideo,image,carouselMeta and TikTok. Null when not stored.countriesarray of string required nullable Null on Meta commercial Ads and unread TikTok details.variant_countnumber nullable Meta only. How many Ads share this Ad's media; null for a single Ad.days_runninginteger required nullable Start to stop, else to removal, else to now. Null with no start, or when an Ad known stopped has no stop or removal date.variationsarray of object Google only. Each version of the Ad's copy and media. A video Ad's YouTube id sits here when Google shows one, which not every video Ad has;creative.video_urlsstays empty.headlinestring required nullabledescriptionstring required nullableall_textstring required nullabledestination_urlstring required nullablevisible_urlstring required nullableimage_urlsarray of string requiredvideo_idstring required nullableyoutube_urlstring required nullable
details_failedboolean Google search only. True when this Ad's details could not be read: it holds only the list row and is not charged or stored.archivedboolean True when every media URL is our permanent archived copy; false while any is still the library's expiring URL (retried on the next sighting).winner_scoreobject nullable Meta only. How strongly the Ad looks like a winner. 0 to 100, computed from the stored history of the Ad, never fetched. score = round(100 x (0.7 x rank(days_running) + 0.3 x rank(variants_added))), where rank is the share of the Advertiser's other Ads below this one (ties count half) and variants_added is the variant count at the latest Snapshot minus at the first. With one Snapshot the score is round(100 x rank(days_running)), confidence low, reason single_snapshot. With no other dated Ad of the Advertiser, rank falls back to min(days, 90)/90 and min(variants, 5)/5; under 5 dated Ads of the Advertiser the score is low confidence, reason few_advertiser_ads. No start date: score null, reason no_start_date.scorenumber required nullableconfidencestring required one ofhigh,lowinputsobject requireddays_runningnumber required nullablevariants_addednumber requiredsnapshotsnumber requiredadvertiser_adsnumber required Dated Ads of this Advertiser stored so far, this one included.
reasonstring required nullable one ofsingle_snapshot,few_advertiser_ads,no_start_date
intelligenceany of 2 shapes nullable Only withinclude=intelligence. Null with none stored.Option 1 object Video Ads: the full video analysis, read from the archived video with the ad copy as context, plus
offer,copy, and detected shots, the product's first appearance and the opening frame understructure.versioninteger requiredmodelstring requiredcomputed_atstring requiredsourcestring requiredcontentobject requiredsummarystring requirednichestring requiredlanguagesarray of string requiredcontent_stylesarray of string requiredkeywordsarray of object requiredkeywordstring requiredcategorystring requiredsentimentnumber required
transcriptstring required nullable What is said, one line per line: the Platform's captions or speech-to-text, never the scene breakdown. Empty with no speech; null when it could not be read.transcript_sourcestring required nullable one ofcaption,whispercaption: the Platform's caption track.whisper: speech-to-text on the audio. Null whentranscriptis null, and on analysis stored before 2026-11-09.transcript_segmentsarray of object required nullable Timed transcript lines (ms from the start), to see when the hook lands. From the Platform's timed captions when it has them, otherwise measured from the video's audio with speech-to-text. Spoken timing here is measured; times instructure.scenesare approximate. Empty when the video has no speech, music-only videos included. Null when the timing could not be measured, on a YouTube Video with no captions, and on older analyses.start_msinteger requiredend_msinteger requiredtextstring required
hookobject requiredopening_linestring required nullabletypestring requiredvisual_hookstring required nullablerationalestring required nullable
persuasionobject requiredcall_to_actionobject requiredtypestring requiredtextstring required nullable
sponsoredboolean required Whether the video is plausibly a paid promotion. Always true when the Platform labels it an ad or a paid partnership.sponsorship_signalsarray of string requiredbrands_and_productsarray of object requirednamestring requiredkindstring requiredprominencestring required
trend_referencesarray of object requirednamestring requiredkindstring required
toneobject requiredsentiment_labelstring requiredsentiment_scorenumber requiredprimary_emotionstring requiredemotion_intensitynumber required nullableemotion_rationalestring required nullablespeaking_stylestring requiredspeaking_style_notesstring required nullable
visualobject requiredformatstring requiredsettingstring requiredface_visibilitystring requiredon_screen_textarray of string requiredhas_on_screen_captionsboolean requiredcamera_notesstring required nullablelighting_notesstring required nullableelementsany
safetyobject requiredbrand_safety_tierstring requiredreasonsarray of string requirednotesstring required nullable
structureobject required When things happen inside the creative: the timed scenes every analysis carries, plus the shots detected, when the product is first seen and the opening frame on a video Ad.scenesarray of object required The timed scenes, read from the stored scene breakdown. Times are approximate, to about a second. Empty when the breakdown has no timed scenes, as on a photo carousel.start_msinteger required Approximate scene start, ms from the start.end_msinteger required Approximate scene end, ms from the start.visualstring required nullabletext_overlaystring required nullable Text shown in this scene, listed at its first appearance: text repeated from an earlier scene is left out.speechstring required nullableaudiostring required nullable Notable sound effects or music.
shotsarray of object required nullable The detected shots in order, each from one cut to the next. A cut is a frame whose ffmpeg scene score is over 0.2. On 29 labelled Ads this found 86% of hard cuts within 500 ms (median error 67 ms) and 61% of jump cuts overall, but none on UGC Ads. Null when detection failed, and on analysis stored before shots.start_msinteger required Shot start: the cut before it, or 0.end_msinteger required Shot end: the next cut, or the video's end.
cuts_per_minutenumber required nullable Detected cuts per minute of video, to two decimals. Null whenevershotsis.avg_shot_msinteger required nullable The video's length over its number of shots, in ms. Null whenevershotsis.product_first_seen_msinteger required nullable When the promoted product first appears (the item, its packaging or logo, or an app's screen), as the start of that scene in ms, so approximate to one scene. On 26 labelled Ads that show one, it was within 3 s of the labelled time on 23 (88%). Null when no product is shown, and on analysis stored before it.first_framestring required nullable What the video's opening frame shows, as text: a description, not a time. Read from the first scene's**Opening Frame:**line in the scene breakdown. Checked against the video on 10 Ads, it was accurate on all 10. Null when the breakdown has no opening frame, and on analysis stored before it.
pipelinestring required alwaysvideoofferobject required nullable The offer, in the same types as an image Ad'soffer. Null when the extraction failed and on analysis stored before this field.typestring requiredtextstring required nullable
copyobject required nullable The persuasion angle, in the same values as an image Ad'scopy.angle. Null when the extraction failed and on analysis stored before this field.anglestring requiredrationalestring required nullable
Option 2 object Image and carousel Ads: the analysis an image can carry, read from the archived images with the ad copy as context.
pipelinestring required alwaysimageversioninteger requiredmodelstring requiredcomputed_atstring requiredimages_analyzedinteger requiredsummarystring requiredcopyobject requiredanglestring requiredrationalestring required nullableheadlinestring required nullable
offerobject requiredtypestring requiredtextstring required nullable
call_to_actionobject requiredtypestring requiredtextstring required nullable
visualobject requiredformatstring requiredon_image_textarray of string required
topicsarray of string requiredtoneobject requiredsentiment_labelstring requiredsentiment_scorenumber required
intelligence_errorobject Whyanalyzeleftintelligencenull: no analysis charge. Its fields are on Errors.advertiser_accountobject nullable TikTok lookup only. The TikTok account the Ad ran from.usernamestring requireddisplay_namestring required nullablefollowersstring required nullable As TikTok shows it (9.3M), not a number.verifiedboolean required nullableurlstring required nullable
targetingobject nullable TikTok lookup only. Where and to whom the ad library says the Ad was delivered, impressions as ranges per country by age and gender. Null when the Ad came from Creative Center.countriesarray of string requiredimpressionsstring required nullableaudience_sizestring required nullableagesarray of string required Age ranges targeted (18-24).gendersarray of string required Genders targeted (female,male,unknown).by_countryarray of object requiredcountrystring requiredimpressionsstring required nullablebreakdownarray of object requiredagestring requiredgenderstring requiredimpressionsstring required nullable
performanceobject nullable TikTok lookup only. Creative Center's engagement figures, when the Ad is a Creative Center Top Ad; null for an Ad only the ad library holds.ctrnumber required nullable Click-through rate as a fraction (0.46 is 46%).likesnumber required nullablecommentsnumber required nullable
objectivestring nullable TikTok lookup only. The Ad's objective (Traffic).stopped_atstring required nullable TikTok infers it from the last day shown.removed_from_libraryboolean requiredremoved_atstring required nullable When we first found the Ad gone from the library.analysisobject required nullable Null when the Ad has no stored analysis.summarystring requiredhook_typestring required nullable Null on image Ads.anglestring required nullable Null on older video Ads.offer_typestring required nullableNONE: no offer found. Null on older video Ads.formatstring required
400 Bad Request
invalid_request for a cursor that is not a next_cursor this API issued. Nothing is charged.
Code: invalid_request. The problem body and every code are on Errors.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose. retryable and action say whether to retry and what to do next.
typestring requiredtitlestring requiredstatusinteger requiredcodestring required one ofmissing_authorization,invalid_key,key_revoked,key_expired,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,key_scope_insufficient,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,focus_unsupported_kind,not_found,comment_not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,max_credits_exceeded,key_spend_cap_exceeded,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstringerrorsarray of object Oninvalid_requestfrom a field that failed validation: one entry per problem, so you can find the field without parsingdetail. Absent when no single field is at fault, e.g. a body that is not JSON.pathstring required Dotted path of the field to fix, e.g.collection_ids.1orcursor. Empty for an issue with the request body as a whole.messagestring required What is wrong with that field.
request_idstring The request this problem answers, the same as itsX-Request-Idheader. Quote it to support.retryableboolean required Whether sending the same request again, after any wait named here, can succeed:truefor a rate or concurrency limit, an upstream outage, an internal error or a Run not yet settled;falsewhen the request must change or a person must act. Fixed percode.actionstring required The next step, in one sentence.remedystring What to do next, as the code's error reference page says it; fuller thanaction. On every problem a request answers with; a per-itemerrorinside a result may omit it.retry_after_secondsinteger value at least 0 Seconds to wait before retrying; the same as theRetry-Afterheader. Onrate_limit_exceeded,concurrency_limit_exceeded,source_unavailableandservice_unavailable.expired_atstring When the key expired. Onkey_expired.resets_atstring When the request window (rate_limit_exceeded) or the key's month (key_spend_cap_exceeded) resets.limitinteger The limit that was hit, on the*_limit_exceededcodes.runninginteger Runs in flight. Onconcurrency_limit_exceeded.activeinteger Active Trackers or webhook endpoints. Ontracker_limit_exceededandwebhook_limit_exceeded.requestedinteger Trackers the request would resume. Ontracker_limit_exceededfrom a Collection action.countinteger Collections held. Oncollection_limit_exceeded.balance_creditsinteger The Balance, in Credits. Oninsufficient_balance.required_creditsinteger What the call needs, in Credits (the worst case where quoted). Oninsufficient_balance.max_creditsinteger The cap the call sent. Onmax_credits_exceeded.estimate_creditsinteger The call's worst-case quote, in Credits. Onmax_credits_exceededandkey_spend_cap_exceeded.cap_creditsinteger The key's monthly cap. Onkey_spend_cap_exceeded.spent_creditsinteger The key's Charges this UTC month. Onkey_spend_cap_exceeded.reserved_creditsinteger What the key's Runs in flight hold. Onkey_spend_cap_exceeded.endpointsarray of string The sources that could not answer. Onsource_unavailable.endpointstring The source that could not answer. Onsource_unavailable.candidatesarray of object The advertisers that carry the name, to ask again with. Onadvertiser_ambiguous.supported_kindsarray of string The kinds that are accepted. Onkind_deprecatedandfocus_unsupported_kind.duration_secondsnumber The video's length. Onvideo_too_long.max_duration_secondsnumber The longest video accepted. Onvideo_too_long.overlap_expires_atstring When the previous secret stops working. Onwebhook_rotation_in_progress.scopestring alwaysread_onlyThe key's scope. Onkey_scope_insufficient.requiredstring alwaysfullThe scope the call needs. Onkey_scope_insufficient.collection_idstring The Collection that already has the name. Oncollection_name_taken.collection_kindstring The Collection's kind. Oncollection_kind_mismatch.kindstring The kind that was offered. Oncollection_kind_mismatch.run_idstring The Run the Idempotency-Key already belongs to. Onidempotency_conflict.reasonstring A short machine-readable reason, where a code has several.reference_idstring Our reference for an unexpected failure, the same asrequest_id; quote it when reporting it.runobject The Run, on a failed Run's body, so its id is kept.idstring requiredkindstring required What was run, e.g.video_lookup.statusstring required one ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstring required RFC 3339.completed_atstring required nullable Null while the Run is still running.charge_creditsinteger required What this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsinteger required The full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedboolean required True when a stored result answered without a fresh fetch.progressobject What a running Research has done so far, refreshed as it works: itsstageand the counts known by then, such asanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestring required one ofkeywords,searching,reading_creators,filtering,analysing,writing_digestkeywordsinteger value at least 0creatorsinteger value at least 0creators_readinteger value at least 0searchesinteger value at least 0foundinteger value at least 0judgedinteger value at least 0keptinteger value at least 0dropped_off_topicinteger value at least 0dropped_unsureinteger value at least 0shortlistedinteger value at least 0analysedinteger value at least 0updated_atstring required
errorobject The same problem, nested, on a failed Run's body.
400 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "`cursor` is not a cursor this API issued. Pass back the `next_cursor` from the previous page.",
"retryable": false,
"action": "Fix the field named in `detail`, then send the corrected request."
}401 Unauthorized
missing_authorization, invalid_key, key_revoked, key_expired or invalid_token.
Codes: missing_authorization, invalid_key, key_revoked, key_expired, invalid_token. The problem body and every code are on Errors.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose. retryable and action say whether to retry and what to do next.
typestring requiredtitlestring requiredstatusinteger requiredcodestring required one ofmissing_authorization,invalid_key,key_revoked,key_expired,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,key_scope_insufficient,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,focus_unsupported_kind,not_found,comment_not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,max_credits_exceeded,key_spend_cap_exceeded,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstringerrorsarray of object Oninvalid_requestfrom a field that failed validation: one entry per problem, so you can find the field without parsingdetail. Absent when no single field is at fault, e.g. a body that is not JSON.pathstring required Dotted path of the field to fix, e.g.collection_ids.1orcursor. Empty for an issue with the request body as a whole.messagestring required What is wrong with that field.
request_idstring The request this problem answers, the same as itsX-Request-Idheader. Quote it to support.retryableboolean required Whether sending the same request again, after any wait named here, can succeed:truefor a rate or concurrency limit, an upstream outage, an internal error or a Run not yet settled;falsewhen the request must change or a person must act. Fixed percode.actionstring required The next step, in one sentence.remedystring What to do next, as the code's error reference page says it; fuller thanaction. On every problem a request answers with; a per-itemerrorinside a result may omit it.retry_after_secondsinteger value at least 0 Seconds to wait before retrying; the same as theRetry-Afterheader. Onrate_limit_exceeded,concurrency_limit_exceeded,source_unavailableandservice_unavailable.expired_atstring When the key expired. Onkey_expired.resets_atstring When the request window (rate_limit_exceeded) or the key's month (key_spend_cap_exceeded) resets.limitinteger The limit that was hit, on the*_limit_exceededcodes.runninginteger Runs in flight. Onconcurrency_limit_exceeded.activeinteger Active Trackers or webhook endpoints. Ontracker_limit_exceededandwebhook_limit_exceeded.requestedinteger Trackers the request would resume. Ontracker_limit_exceededfrom a Collection action.countinteger Collections held. Oncollection_limit_exceeded.balance_creditsinteger The Balance, in Credits. Oninsufficient_balance.required_creditsinteger What the call needs, in Credits (the worst case where quoted). Oninsufficient_balance.max_creditsinteger The cap the call sent. Onmax_credits_exceeded.estimate_creditsinteger The call's worst-case quote, in Credits. Onmax_credits_exceededandkey_spend_cap_exceeded.cap_creditsinteger The key's monthly cap. Onkey_spend_cap_exceeded.spent_creditsinteger The key's Charges this UTC month. Onkey_spend_cap_exceeded.reserved_creditsinteger What the key's Runs in flight hold. Onkey_spend_cap_exceeded.endpointsarray of string The sources that could not answer. Onsource_unavailable.endpointstring The source that could not answer. Onsource_unavailable.candidatesarray of object The advertisers that carry the name, to ask again with. Onadvertiser_ambiguous.supported_kindsarray of string The kinds that are accepted. Onkind_deprecatedandfocus_unsupported_kind.duration_secondsnumber The video's length. Onvideo_too_long.max_duration_secondsnumber The longest video accepted. Onvideo_too_long.overlap_expires_atstring When the previous secret stops working. Onwebhook_rotation_in_progress.scopestring alwaysread_onlyThe key's scope. Onkey_scope_insufficient.requiredstring alwaysfullThe scope the call needs. Onkey_scope_insufficient.collection_idstring The Collection that already has the name. Oncollection_name_taken.collection_kindstring The Collection's kind. Oncollection_kind_mismatch.kindstring The kind that was offered. Oncollection_kind_mismatch.run_idstring The Run the Idempotency-Key already belongs to. Onidempotency_conflict.reasonstring A short machine-readable reason, where a code has several.reference_idstring Our reference for an unexpected failure, the same asrequest_id; quote it when reporting it.runobject The Run, on a failed Run's body, so its id is kept.idstring requiredkindstring required What was run, e.g.video_lookup.statusstring required one ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstring required RFC 3339.completed_atstring required nullable Null while the Run is still running.charge_creditsinteger required What this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsinteger required The full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedboolean required True when a stored result answered without a fresh fetch.progressobject What a running Research has done so far, refreshed as it works: itsstageand the counts known by then, such asanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestring required one ofkeywords,searching,reading_creators,filtering,analysing,writing_digestkeywordsinteger value at least 0creatorsinteger value at least 0creators_readinteger value at least 0searchesinteger value at least 0foundinteger value at least 0judgedinteger value at least 0keptinteger value at least 0dropped_off_topicinteger value at least 0dropped_unsureinteger value at least 0shortlistedinteger value at least 0analysedinteger value at least 0updated_atstring required
errorobject The same problem, nested, on a failed Run's body.
401 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/invalid_key",
"title": "Invalid key",
"status": 401,
"code": "invalid_key",
"detail": "That API key does not exist. Keys look like `sk_live_...` and are created in the console.",
"retryable": false,
"action": "Check the whole key was copied, or create a new key in the console."
}404 Not Found
not_found — also a deleted Tracker, or another Customer's.
Code: not_found. The problem body and every code are on Errors.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose. retryable and action say whether to retry and what to do next.
typestring requiredtitlestring requiredstatusinteger requiredcodestring required one ofmissing_authorization,invalid_key,key_revoked,key_expired,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,key_scope_insufficient,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,focus_unsupported_kind,not_found,comment_not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,max_credits_exceeded,key_spend_cap_exceeded,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstringerrorsarray of object Oninvalid_requestfrom a field that failed validation: one entry per problem, so you can find the field without parsingdetail. Absent when no single field is at fault, e.g. a body that is not JSON.pathstring required Dotted path of the field to fix, e.g.collection_ids.1orcursor. Empty for an issue with the request body as a whole.messagestring required What is wrong with that field.
request_idstring The request this problem answers, the same as itsX-Request-Idheader. Quote it to support.retryableboolean required Whether sending the same request again, after any wait named here, can succeed:truefor a rate or concurrency limit, an upstream outage, an internal error or a Run not yet settled;falsewhen the request must change or a person must act. Fixed percode.actionstring required The next step, in one sentence.remedystring What to do next, as the code's error reference page says it; fuller thanaction. On every problem a request answers with; a per-itemerrorinside a result may omit it.retry_after_secondsinteger value at least 0 Seconds to wait before retrying; the same as theRetry-Afterheader. Onrate_limit_exceeded,concurrency_limit_exceeded,source_unavailableandservice_unavailable.expired_atstring When the key expired. Onkey_expired.resets_atstring When the request window (rate_limit_exceeded) or the key's month (key_spend_cap_exceeded) resets.limitinteger The limit that was hit, on the*_limit_exceededcodes.runninginteger Runs in flight. Onconcurrency_limit_exceeded.activeinteger Active Trackers or webhook endpoints. Ontracker_limit_exceededandwebhook_limit_exceeded.requestedinteger Trackers the request would resume. Ontracker_limit_exceededfrom a Collection action.countinteger Collections held. Oncollection_limit_exceeded.balance_creditsinteger The Balance, in Credits. Oninsufficient_balance.required_creditsinteger What the call needs, in Credits (the worst case where quoted). Oninsufficient_balance.max_creditsinteger The cap the call sent. Onmax_credits_exceeded.estimate_creditsinteger The call's worst-case quote, in Credits. Onmax_credits_exceededandkey_spend_cap_exceeded.cap_creditsinteger The key's monthly cap. Onkey_spend_cap_exceeded.spent_creditsinteger The key's Charges this UTC month. Onkey_spend_cap_exceeded.reserved_creditsinteger What the key's Runs in flight hold. Onkey_spend_cap_exceeded.endpointsarray of string The sources that could not answer. Onsource_unavailable.endpointstring The source that could not answer. Onsource_unavailable.candidatesarray of object The advertisers that carry the name, to ask again with. Onadvertiser_ambiguous.supported_kindsarray of string The kinds that are accepted. Onkind_deprecatedandfocus_unsupported_kind.duration_secondsnumber The video's length. Onvideo_too_long.max_duration_secondsnumber The longest video accepted. Onvideo_too_long.overlap_expires_atstring When the previous secret stops working. Onwebhook_rotation_in_progress.scopestring alwaysread_onlyThe key's scope. Onkey_scope_insufficient.requiredstring alwaysfullThe scope the call needs. Onkey_scope_insufficient.collection_idstring The Collection that already has the name. Oncollection_name_taken.collection_kindstring The Collection's kind. Oncollection_kind_mismatch.kindstring The kind that was offered. Oncollection_kind_mismatch.run_idstring The Run the Idempotency-Key already belongs to. Onidempotency_conflict.reasonstring A short machine-readable reason, where a code has several.reference_idstring Our reference for an unexpected failure, the same asrequest_id; quote it when reporting it.runobject The Run, on a failed Run's body, so its id is kept.idstring requiredkindstring required What was run, e.g.video_lookup.statusstring required one ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstring required RFC 3339.completed_atstring required nullable Null while the Run is still running.charge_creditsinteger required What this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsinteger required The full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedboolean required True when a stored result answered without a fresh fetch.progressobject What a running Research has done so far, refreshed as it works: itsstageand the counts known by then, such asanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestring required one ofkeywords,searching,reading_creators,filtering,analysing,writing_digestkeywordsinteger value at least 0creatorsinteger value at least 0creators_readinteger value at least 0searchesinteger value at least 0foundinteger value at least 0judgedinteger value at least 0keptinteger value at least 0dropped_off_topicinteger value at least 0dropped_unsureinteger value at least 0shortlistedinteger value at least 0analysedinteger value at least 0updated_atstring required
errorobject The same problem, nested, on a failed Run's body.
404 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "No such resource for this Customer.",
"retryable": false,
"action": "Check the id or handle; list your resources to find the right one."
}422 Unprocessable Content
unsupported_kind — not an Advertiser Tracker. Nothing is run or charged.
Code: unsupported_kind. The problem body and every code are on Errors.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose. retryable and action say whether to retry and what to do next.
typestring requiredtitlestring requiredstatusinteger requiredcodestring required one ofmissing_authorization,invalid_key,key_revoked,key_expired,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,key_scope_insufficient,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,focus_unsupported_kind,not_found,comment_not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,max_credits_exceeded,key_spend_cap_exceeded,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstringerrorsarray of object Oninvalid_requestfrom a field that failed validation: one entry per problem, so you can find the field without parsingdetail. Absent when no single field is at fault, e.g. a body that is not JSON.pathstring required Dotted path of the field to fix, e.g.collection_ids.1orcursor. Empty for an issue with the request body as a whole.messagestring required What is wrong with that field.
request_idstring The request this problem answers, the same as itsX-Request-Idheader. Quote it to support.retryableboolean required Whether sending the same request again, after any wait named here, can succeed:truefor a rate or concurrency limit, an upstream outage, an internal error or a Run not yet settled;falsewhen the request must change or a person must act. Fixed percode.actionstring required The next step, in one sentence.remedystring What to do next, as the code's error reference page says it; fuller thanaction. On every problem a request answers with; a per-itemerrorinside a result may omit it.retry_after_secondsinteger value at least 0 Seconds to wait before retrying; the same as theRetry-Afterheader. Onrate_limit_exceeded,concurrency_limit_exceeded,source_unavailableandservice_unavailable.expired_atstring When the key expired. Onkey_expired.resets_atstring When the request window (rate_limit_exceeded) or the key's month (key_spend_cap_exceeded) resets.limitinteger The limit that was hit, on the*_limit_exceededcodes.runninginteger Runs in flight. Onconcurrency_limit_exceeded.activeinteger Active Trackers or webhook endpoints. Ontracker_limit_exceededandwebhook_limit_exceeded.requestedinteger Trackers the request would resume. Ontracker_limit_exceededfrom a Collection action.countinteger Collections held. Oncollection_limit_exceeded.balance_creditsinteger The Balance, in Credits. Oninsufficient_balance.required_creditsinteger What the call needs, in Credits (the worst case where quoted). Oninsufficient_balance.max_creditsinteger The cap the call sent. Onmax_credits_exceeded.estimate_creditsinteger The call's worst-case quote, in Credits. Onmax_credits_exceededandkey_spend_cap_exceeded.cap_creditsinteger The key's monthly cap. Onkey_spend_cap_exceeded.spent_creditsinteger The key's Charges this UTC month. Onkey_spend_cap_exceeded.reserved_creditsinteger What the key's Runs in flight hold. Onkey_spend_cap_exceeded.endpointsarray of string The sources that could not answer. Onsource_unavailable.endpointstring The source that could not answer. Onsource_unavailable.candidatesarray of object The advertisers that carry the name, to ask again with. Onadvertiser_ambiguous.supported_kindsarray of string The kinds that are accepted. Onkind_deprecatedandfocus_unsupported_kind.duration_secondsnumber The video's length. Onvideo_too_long.max_duration_secondsnumber The longest video accepted. Onvideo_too_long.overlap_expires_atstring When the previous secret stops working. Onwebhook_rotation_in_progress.scopestring alwaysread_onlyThe key's scope. Onkey_scope_insufficient.requiredstring alwaysfullThe scope the call needs. Onkey_scope_insufficient.collection_idstring The Collection that already has the name. Oncollection_name_taken.collection_kindstring The Collection's kind. Oncollection_kind_mismatch.kindstring The kind that was offered. Oncollection_kind_mismatch.run_idstring The Run the Idempotency-Key already belongs to. Onidempotency_conflict.reasonstring A short machine-readable reason, where a code has several.reference_idstring Our reference for an unexpected failure, the same asrequest_id; quote it when reporting it.runobject The Run, on a failed Run's body, so its id is kept.idstring requiredkindstring required What was run, e.g.video_lookup.statusstring required one ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstring required RFC 3339.completed_atstring required nullable Null while the Run is still running.charge_creditsinteger required What this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsinteger required The full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedboolean required True when a stored result answered without a fresh fetch.progressobject What a running Research has done so far, refreshed as it works: itsstageand the counts known by then, such asanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestring required one ofkeywords,searching,reading_creators,filtering,analysing,writing_digestkeywordsinteger value at least 0creatorsinteger value at least 0creators_readinteger value at least 0searchesinteger value at least 0foundinteger value at least 0judgedinteger value at least 0keptinteger value at least 0dropped_off_topicinteger value at least 0dropped_unsureinteger value at least 0shortlistedinteger value at least 0analysedinteger value at least 0updated_atstring required
errorobject The same problem, nested, on a failed Run's body.
422 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/unsupported_kind",
"title": "Unsupported kind",
"status": 422,
"code": "unsupported_kind",
"detail": "Stored Ads are read from Advertiser Trackers, not creator Trackers.",
"retryable": false,
"action": "Do not repeat this request; nothing was charged. Use an operation that serves this kind."
}Related guides
- Pagination: Following
next_cursorthrough a list. - Trackers: Standing watches on a creator or an Advertiser: how a cycle runs, when it reports a change, and how to pause one.