Check links
Last updated: 2026-10-10
POST /v1/check/links checks 1 to 10 URLs in one call: status, redirect chain, final URL, content_kind, title and content hash for each, under one signed receipt. Price: US$0.005 per batch.
Use it to check the sources in a draft before you publish or hand it on.
Request
{ "urls": ["https://www.iana.org/help/example-domains", "https://www.iana.org/domains/reserved"] }
urls is a list of 1 to 10 http or https URLs, each at most 2,048 characters. Every URL is checked before payment; if any one is malformed, blocked or disallowed by robots.txt, the whole request is refused and not charged.
Response
From the free sample (GET /v1/sample/links), shortened:
{
"results": [
{
"url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/sample/page",
"final_url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/sample/page",
"http_status": 200,
"redirects": [],
"content_kind": "real",
"title": "Regional climate report 2025 (demo page)",
"content_sha256": "0e429607…"
},
{
"url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/sample/missing",
"final_url": "https://vehcdj664efetfrsolne5umanq.srv.us/v1/sample/missing",
"http_status": 404,
"redirects": [],
"content_kind": "http_error",
"title": null,
"content_sha256": "cb699046…"
}
],
"receipt": "eyJhbGciOiJFZERTQSIs…",
"tier": "paid"
}
Dead domains
A URL whose host name does not resolve is reported as a result: content_kind http_error, http_status null, and the batch is charged. If no URL in the batch resolves, the call gets 422 host_not_found and is not charged.
PDF links
A live PDF link (status 2xx, content type application/pdf, on the same site as the URL) is reported with content_kind pdf. check/links does not read PDFs, so its title and content_sha256 are null. To read a PDF's text or check a quote in it, use fetch or verify/quote on the full service.
Links that are not read
check/links reads HTML, text and JSON only. Any other link (a PDF, an image, a download) with a 4xx or 5xx status is http_error, so a dead PDF reads as dead. Any link that redirects to another site is off_site, whatever its type, as for an HTML page. If the other site answers with a 4xx or 5xx status, the result also has "off_site_error": true, so a link that moved to a dead page is not missed; otherwise the field is left out. Where archive snapshots are on, a paid call also looks such a link up (the URL you sent) and adds wayback, as for a failed URL. A live link of another type on the same site is unsupported_type.
Charging
If a URL turns out to be disallowed by robots.txt or rate limited after payment (for example after a redirect), the whole batch answers with an error and is not charged. See Payments.
A free-trial call covers at most 3 URLs. A larger batch is not run as a trial: it gets the normal 402 offer, with details.reason trial_too_large, and is not charged.