List incident affected URLs

GET/v1/api/sites/{site_id}/incidents/{incident_id}/affected-urls

List the pages behind one incident, as its page lists them, with membership state.

membership_state is confirmed, partial or unavailable (an HTTP 200 state, not an error: site-level triggers and broken-link incidents have no page list here; broken links use link-pairs). membership_view is current, or historical for a resolved incident, whose total counts the preserved members while current_total is 0. page * per_page must not exceed 100000.

Scope
alerts:read
Token
API key or OAuth access token
Role
Any workspace member
MCP tool
list_incident_affected_urls
What scopes, tokens and roles mean →
Request
curl "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/incidents/1/affected-urls" \
  -H "Authorization: Bearer $CRAWLE_API_KEY"
const response = await fetch("https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/incidents/1/affected-urls", {
  headers: {
    Authorization: `Bearer ${process.env.CRAWLE_API_KEY}`,
  },
});
const data = await response.json();
import os

import requests

response = requests.request(
    "GET",
    "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/incidents/1/affected-urls",
    headers={
        "Authorization": f"Bearer {os.environ['CRAWLE_API_KEY']}",
    },
)
data = response.json()
$CRAWLE_API_KEY
is an API key from Settings › API keys.
Response 200JSON
{
  "current_total": 1,
  "hreflang_summary": {
    "added_count": 1,
    "affected_url_count": 1,
    "language_count": 1,
    "language_counts": [
      {
        "added_count": 1,
        "language": "example",
        "modified_count": 1,
        "removed_count": 1,
        "total_count": 1
      }
    ],
    "modified_count": 1,
    "removed_count": 1,
    "unparsed_url_count": 1
  },
  "membership_revision": "example",
  "membership_state": "confirmed",
  "membership_view": "current",
  "page": 1,
  "per_page": 1,
  "previously_seen_count": 1,
  "recovery_confirmed": true,
  "returned": 1,
  "total": 1,
  "trigger_type": "example",
  "urls": [
    {
      "availability": {},
      "change_count": 1,
      "current_value": "example",
      "detail": "example",
      "detected_at": "example",
      "hreflang_changes": [
        {}
      ],
      "member_disposition": "example",
      "member_previous_disposition": "example",
      "original_value": "example",
      "orphan": true,
      "orphan_at_detection": {},
      "previous_disposition": "example",
      "reason": "example",
      "status_code": 1,
      "url": "https://example.com/",
      "url_id": 1
    }
  ]
}

Example generated from the API contract.

Parameters

site_idpath · string (uuid)required
incident_idpath · integerrequired
at least 1
pagequery · integer
at least 1 · default 1
per_pagequery · integer
1–200 · default 50

Pages with page and a page size.

Response 200

pageintegerrequired
per_pageintegerrequired
totalinteger or nullrequired
Members of the incident's stored snapshot (null when membership_state is unavailable). For a resolved incident this counts the preserved members.
trigger_typestringrequired
urlsarray of PublicIncidentAffectedUrlrequired
availabilityobject or null
Today's assessment of the page, separate from membership.
change_countinteger or null
current_valuestring or null
detailstring or null
detected_atstring or null
hreflang_changesarray of any or null
member_dispositionstring or null
member_previous_dispositionstring or null
original_valuestring or null
orphanboolean or null
Today's orphan assessment, separate from membership.
orphan_at_detectionobject or null
The orphan evidence retained when the page was added.
previous_dispositionstring or null
The state the page had in an earlier, acknowledged incident, if any.
reasonstring or null
status_codeinteger or null
urlstringrequired
url_idinteger or null
current_totalinteger or null
Pages affected now; 0 for a resolved incident.
hreflang_summaryPublicHreflangIncidentSummary or null
added_countintegerrequired
affected_url_countintegerrequired
language_countintegerrequired
language_countsarray of PublicHreflangLanguageSummary
added_countintegerrequired
languagestringrequired
modified_countintegerrequired
removed_countintegerrequired
total_countintegerrequired
modified_countintegerrequired
removed_countintegerrequired
unparsed_url_countintegerrequired
membership_revisionstring or null
membership_stateenum or null
confirmed: the count and the page come from one stored snapshot. partial: the count is known but the page could not be read. unavailable: no page list exists for this incident (site-level triggers, broken links; the answer is HTTP 200, not an error), and total is null.one of "confirmed", "partial", "unavailable"
membership_viewenum or null
current: the pages affected now. historical: the preserved members of a resolved incident; total counts them while current_total is 0.one of "current", "historical"
previously_seen_countinteger or null
recovery_confirmedboolean or null
True only when the preserved snapshot proves the pages recovered.
returnedinteger or null

Errors

  • 401

    When
    Missing, invalid, or expired token.
  • 403

    When
    The token has none of the accepted scopes (alerts:read).
  • 422

    When
    The request did not match the schema. detail lists each problem.
  • 502

    When
    The site's crawler answered outside the contract (crawler_response_invalid).
  • 429

    When
    Rate limited. Wait for Retry-After seconds.

All errors and what to do →

Generated from the API contract at 7e7039b0b, synced October 30, 2026.