Get a Meta Ad's analysis
GET
/v1/ads/meta/{library_id}/intelligenceThe Ad's latest stored analysis, as an earlier analyze computed it. Nothing is computed here: an Ad with none yet is not_found; ask for it with analyze. Shared across Customers.
Open in Playground(no API Key needed)
Price
Free.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
library_id | path | string | Required | — | The Meta Ad Library id. |
Responses
200 OK
{ library_id, intelligence }.
object
library_idstringrequiredintelligenceany of 2 shapesrequiredAd analysis, versioned and computed once per Ad and version.pipelinesays which set it is.Option 1objectVideo Ads: the full video analysis, read from the archived video with the ad copy as context.
versionintegerrequiredmodelstringrequiredcomputed_atstringrequiredsourcestringrequiredcontentobjectrequiredsummarystringrequirednichestringrequiredlanguagesarray of stringrequiredcontent_stylesarray of stringrequiredkeywordsarray of objectrequiredkeywordstringrequiredcategorystringrequiredsentimentnumberrequired
transcriptstringrequirednullable
hookobjectrequiredopening_linestringrequirednullabletypestringrequiredvisual_hookstringrequirednullablerationalestringrequirednullable
persuasionobjectrequiredcall_to_actionobjectrequiredtypestringrequiredtextstringrequirednullable
sponsoredbooleanrequiredsponsorship_signalsarray of stringrequiredbrands_and_productsarray of objectrequirednamestringrequiredkindstringrequiredprominencestringrequired
trend_referencesarray of objectrequirednamestringrequiredkindstringrequired
toneobjectrequiredsentiment_labelstringrequiredsentiment_scorenumberrequiredprimary_emotionstringrequiredemotion_intensitynumberrequirednullableemotion_rationalestringrequirednullablespeaking_stylestringrequiredspeaking_style_notesstringrequirednullable
visualobjectrequiredformatstringrequiredsettingstringrequiredface_visibilitystringrequiredon_screen_textarray of stringrequiredhas_on_screen_captionsbooleanrequiredcamera_notesstringrequirednullablelighting_notesstringrequirednullableelementsany
safetyobjectrequiredbrand_safety_tierstringrequiredreasonsarray of stringrequirednotesstringrequirednullable
pipelinestringrequiredalwaysvideo
Option 2objectImage and carousel Ads: the analysis an image can carry, read from the archived images with the ad copy as context.
pipelinestringrequiredalwaysimageversionintegerrequiredmodelstringrequiredcomputed_atstringrequiredimages_analyzedintegerrequiredsummarystringrequiredcopyobjectrequiredanglestringrequiredrationalestringrequirednullableheadlinestringrequirednullable
offerobjectrequiredtypestringrequiredtextstringrequirednullable
call_to_actionobjectrequiredtypestringrequiredtextstringrequirednullable
visualobjectrequiredformatstringrequiredon_image_textarray of stringrequired
topicsarray of stringrequiredtoneobjectrequiredsentiment_labelstringrequiredsentiment_scorenumberrequired
200 · `{ library_id, intelligence }`.
{
"library_id": "2233445566778899",
"intelligence": {
"pipeline": "image",
"version": 1,
"model": "gemini-3.5-flash-lite",
"computed_at": "2026-09-21T10:02:11.000Z",
"images_analyzed": 1,
"summary": "A matte black cold plunge tub shot in a bright bathroom, sold on a daily three-minute routine.",
"copy": {
"angle": "TRANSFORMATION",
"rationale": "The headline frames the tub as a daily ritual and the copy as an upgrade.",
"headline": "Three minutes. Every morning."
},
"offer": {
"type": "NONE",
"text": null
},
"call_to_action": {
"type": "VISIT_SITE",
"text": "Learn More"
},
"visual": {
"format": "PRODUCT_SHOT",
"on_image_text": [
"Three minutes. Every morning."
]
},
"topics": [
"cold plunge",
"morning routine",
"home wellness"
],
"tone": {
"sentiment_label": "POSITIVE",
"sentiment_score": 0.6
}
}
}401 Unauthorized
missing_authorization, invalid_key, key_revoked or invalid_token.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,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.detailstring
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."
}404 Not Found
not_found.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,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.detailstring
404 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "This Ad has no analysis yet. Request it with `analyze: true`."
}Request samples
curl "https://www.shortsintel.com/v1/ads/meta/library_id_example/intelligence" \
-H "Authorization: Bearer sk_live_YOUR_KEY"const response = await fetch(
"https://www.shortsintel.com/v1/ads/meta/library_id_example/intelligence",
{
method: "GET",
headers: {
"Authorization": "Bearer sk_live_YOUR_KEY",
},
},
);
if (!response.ok) {
throw new Error(`ShortsIntel ${response.status}`);
}
const data = await response.json();import requests
response = requests.get(
"https://www.shortsintel.com/v1/ads/meta/library_id_example/intelligence",
headers={
"Authorization": "Bearer sk_live_YOUR_KEY",
},
)
response.raise_for_status()
data = response.json()Related guides
- Ads: Searching Meta's Ad Library with its filters, what each Ad carries, the winner Score, Ad analysis, what is stored, and how an ad search is priced.