GET/api/fixes

Get AI-generated optimization suggestions for a specific evaluation.

Scope: fixes

Query Parameters

ParameterRequiredDescription
actionYes"list" (fixes for one evaluation), "get" (one fix) or "stats" (counts across all your fixes)
evaluationIdFor listUUID of the evaluation (the evaluationId returned by analyze-ad)
fixIdFor getUUID of the fix (fixes[].id)

Example Request

curl "https://app.adalign.io/api/fixes?action=list&evaluationId=UUID_HERE" \
  -H "Authorization: Bearer adal_your_key_here"

Response (action=list)

Fixes are ordered by priority (HIGH first), then newest. A high-severity issue usually has more than one fix, each with a different direction (change_lp, change_ad, change_routing, change_both) and its tradeoff.

{
  "success": true,
  "data": {
    "fixes": [
      {
        "id": "uuid-here",
        "evaluationId": "uuid-here",
        "element": "Primary Headline",
        "fixType": "headline",
        "target": "landing_page",
        "direction": "change_lp",
        "priority": "HIGH",
        "status": "pending",
        "currentValue": "Welcome to Our Store",
        "suggestedValue": "Get 50% Off Premium Software",
        "elementSelector": "h1",
        "reasoning": "The landing page headline should match the ad offer...",
        "expectedImpact": "Visitors see the offer they clicked for",
        "tradeoff": "...",
        "confidenceScore": "0.85",
        "implementationSteps": [
          "Locate the H1 element on the landing page",
          "Replace text with the suggested headline"
        ],
        "appliedAt": null,
        "dismissedAt": null,
        "createdAt": "2026-10-01T09:12:00.000Z"
      }
    ],
    "total": 5,
    "pending": 3,
    "applied": 1,
    "dismissed": 1,
    "paywalled": false
  }
}

status: pending, applied, dismissed or expired. confidenceScore is a decimal string from 0.00 to 1.00.

action=get and action=stats

get returns one fix object (same shape as above) in data. stats counts every fix on your evaluations:

{
  "success": true,
  "data": {
    "total": 42, "pending": 30, "applied": 8, "dismissed": 4,
    "high_priority": 12, "medium_priority": 20, "low_priority": 10,
    "fix_types": 6
  }
}

Errors

400 Missing evaluationId or fixId, or an unknown action

401 Invalid, expired or revoked API key

403 Key lacks the fixes scope

404 The evaluation or fix doesn't exist or belongs to another account