Built for programmatic access

AdAlign API for AI Agents

Evaluate the congruence between paid media ads and their landing pages through a REST API. AdAlign uses proprietary AI vision analysis to score visual match, message match, above-the-fold continuity, and tone alignment, returning structured scores and ready-to-apply fixes.

The API is the scoring step of the AdAlign loop. In the app, connected Meta and Google Ads accounts are scored automatically, ranked by spend at risk per landing page, fixed with approved page variants and watched daily for landing-page drift. The API lets your agent run the same scoring on any ad and page.

What AdAlign Evaluates

Each evaluation produces an overall congruence score (1-10, in 0.5 steps) composed of four weighted dimensions. Weights depend on the platform and placement (Google Search leans on message match, Meta feed on visual match); the weights used for each evaluation are returned in appliedProfile.weights.

Visual Match

10–40%

Compares visual elements between ads and landing pages — colors, imagery, layout, and branding consistency.

Message Match

17.5–35%

Evaluates whether the landing page headline and copy echo the specific promise made in the ad.

Above the Fold Continuity

17.5–35%

Measures whether visitors can quickly find the offer, details, and CTA the ad led them to expect.

Tone Alignment

10–35%

Assesses whether the emotional tone and voice carry through from ad to landing page experience.

Supported Platforms

AdAlign can analyze ads from the following platforms:

Meta (Facebook/Instagram)·TikTok·LinkedIn·Reddit·Google

Authentication

Authenticate with an API key sent as a Bearer token in the Authorization header.

Bearer Token

API keys start with adal_ and are created at Settings → API Keys. API access is included on the Scale plan and above; every plan starts with a demo.

Authorization: Bearer adal_xK3mR7vN2pQw9...

Full authentication documentation →

API Endpoints

Base URL: https://app.adalign.io

OpenAPI spec: https://app.adalign.io/api/openapi

Rate Limits

API calls draw from the same monthly evaluation pool as the app. Limits reset on the 1st of each month (UTC), and failed evaluations are not counted.

PlanEvaluations / monthAPI Keys
Scale€75k–€250k/mo ad spend1,50020
Portfolio€250k–€750k/mo ad spendPer contract50
EnterpriseOver €750k/mo ad spendPer contract50

Full rate limit documentation →

Quick Start

Run your first evaluation with a single API call:

cURL
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 Format

A successful analysis returns structured scoring data (abridged; see the full response reference):

{
  "overallScore": 7,
  "componentScores": {
    "visualMatch": 6.5,
    "messageMatch": 8,
    "aboveTheFoldContinuity": 7,
    "toneAlignment": 7,
    "contextualMatch": 7.5
  },
  "detailedScores": {
    "visualMatch": { "score": 6.5, "band": "MODERATE", "reasoning": "..." },
    "messageMatch": { "score": 8, "band": "GOOD", "reasoning": "..." },
    "aboveTheFoldContinuity": { "score": 7, "band": "GOOD", "reasoning": "..." },
    "toneAlignment": { "score": 7, "band": "GOOD", "reasoning": "..." }
  },
  "elementComparisons": [
    {
      "element": "Primary Headline",
      "category": "message",
      "adValue": "Get 50% Off Today",
      "landingPageValue": "Welcome to Our Store",
      "status": "mismatch",
      "severity": "HIGH",
      "recommendation": "Match the headline to the ad offer"
    }
  ],
  "fixes": [
    {
      "id": "3f6c…",
      "element": "Primary Headline",
      "fixType": "headline",
      "target": "landing_page",
      "direction": "change_lp",
      "priority": "HIGH",
      "currentValue": "Welcome to Our Store",
      "suggestedValue": "Get 50% Off Today",
      "reasoning": "The ad's offer is missing above the fold",
      "expectedImpact": "Visitors see the offer they clicked for",
      "tradeoff": "..."
    }
  ],
  "appliedProfile": {
    "id": "meta_feed",
    "displayLabel": "Meta Feed",
    "weights": { "visualMatch": 0.4, "messageMatch": 0.225, "aboveTheFoldContinuity": 0.225, "toneAlignment": 0.15 }
  },
  "mediaType": "image",
  "viewport": "mobile",
  "evaluationId": "uuid-here"
}

Further Reading