Fetch
Retrieve the page behind a citation as we archived it: each URL’s most recent text snapshot at or before a given date.
Request
curl -X POST https://api.talarion.com/v1/fetch \
-H "Authorization: Bearer $TALARION_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://www.anthropic.com/news/claude-opus-4-8"],
"as_of": "2026-06-01"
}'import os
import requests
resp = requests.post(
"https://api.talarion.com/v1/fetch",
headers={"Authorization": f"Bearer {os.environ['TALARION_API_KEY']}"},
json={
"urls": ["https://www.anthropic.com/news/claude-opus-4-8"],
"as_of": "2026-06-01",
},
)
resp.raise_for_status()
for doc in resp.json()["results"]:
print(doc["url"], doc["content_date"])
if doc["text"]:
print(doc["text"][:500])const res = await fetch("https://api.talarion.com/v1/fetch", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TALARION_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
urls: ["https://www.anthropic.com/news/claude-opus-4-8"],
as_of: "2026-06-01",
}),
});
const { results } = await res.json();
console.log(results);| Field | Type | Required | Description |
|---|---|---|---|
urls | string[] | Yes | Up to 20 URLs, deduplicated server-side; extras beyond 20 are dropped, not rejected. URLs are normalized before lookup (scheme, www., trailing slashes, tracking parameters); other query parameters are significant. |
as_of | date or datetime | No | Return each page’s most recent snapshot at or before this instant, ISO 8601. Defaults to now (UTC). |
Response
A JSON object with a results array, with one entry per URL. Each
entry carries the url as initially provided, content_date (the date the content is from — the
same date as_of filters on), and text, our extracted text of the page. text is null
when we hold nothing for that URL as of that date.
{
"as_of": "2026-06-01T00:00:00Z",
"results": [
{
"url": "https://www.anthropic.com/news/claude-opus-4-8",
"content_date": "2026-05-28T00:00:00Z",
"text": "Introducing Claude Opus 4.8\nWe’re upgrading Claude Opus to a new version: Claude Opus 4.8. It builds on Opus 4.7 with improvements across benchmarks, and is a more effective collaborator…"
}
]
}Pay per call, without an account
/v1/fetch speaks the Machine Payments Protocol. A request with no
Authorization header is answered with a 402 payment challenge rather than a 401,
and needs no subscription.
The challenge quotes the price for your specific request. We count how many of your
URLs we hold text for at or before your as_of, so you pay for exactly the documents
you get back.
Errors & limits
| Status | Meaning |
|---|---|
401 | Invalid API key. A request with no Authorization header gets a 402 payment challenge instead — see above. |
402 | Fetch requires an active subscription. Add a payment method in Billing. |
503 + Retry-After | Retry after the given interval. |