POST
/api/analyze-adRun an AI vision analysis comparing an ad creative with its landing page.
Scope: analyze
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| adData.imageUrl | string | No* | URL of the ad image or creative |
| adData.adUrl | string | No* | Direct URL to the ad (screenshotted automatically) |
| adData.platform | string | Yes | meta, tiktok, linkedin, google, or reddit |
| adData.mediaType | string | No | image, video, or unknown. Defaults to image. |
| landingPageData.url | string | Yes | Landing page URL to analyze |
| viewport | string | No | mobile or desktop. Defaults to platform-appropriate viewport. |
* Either adData.imageUrl or adData.adUrl should be provided.
Example Request
curl -X POST https://app.adalign.io/api/analyze-ad \
-H "Authorization: Bearer adal_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"adData": {
"imageUrl": "https://example.com/ad.png",
"platform": "meta"
},
"landingPageData": {
"url": "https://example.com/landing"
}
}'Response
{
"overallScore": 7.2,
"componentScores": {
"visualMatch": 6.8,
"contextualMatch": 7.5,
"toneAlignment": 7.0,
"messageMatch": 7.8,
"aboveTheFoldContinuity": 7.2,
"informationScent": 7.2
},
"detailedScores": {
"visualMatch": { "score": 6.8, "band": "MODERATE", "reasoning": "..." },
"messageMatch": { "score": 7.8, "band": "GOOD", "reasoning": "..." },
"aboveTheFoldContinuity": { "score": 7.2, "band": "GOOD", "reasoning": "..." },
"informationScent": { "score": 7.2, "band": "GOOD", "reasoning": "DEPRECATED alias — use aboveTheFoldContinuity. Removed in vNEXT." },
"toneAlignment": { "score": 7.0, "band": "GOOD", "reasoning": "..." }
},
"suggestions": {
"visual": ["Match hero image style with ad creative..."],
"contextual": ["Echo the specific offer from the ad headline..."],
"tone": ["Align CTA urgency with ad messaging..."]
},
"elementComparisons": [
{
"element": "Primary Headline",
"adValue": "Get 50% Off Today",
"landingPageValue": "Welcome to Our Store",
"status": "mismatch",
"severity": "HIGH",
"recommendation": "Match the headline to the ad offer"
}
],
"fixes": [
{
"fixType": "headline",
"target": "landing_page",
"priority": "HIGH",
"suggestedValue": "Get 50% Off Today",
"reasoning": "Headline mismatch breaks above-the-fold continuity",
"expectedImpact": "15-25% improvement in conversion rate",
"effort": "LOW"
}
],
"mediaType": "image",
"viewport": "mobile",
"evaluationId": "uuid-here"
}Error Codes
401 Invalid or missing API key
403 Key lacks analyze scope
429 Monthly evaluation limit reached