Fetch page text
const url = 'https://www.cemented.ai/v1/contents';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"urls":["https://example.org/study"],"provider":"exa"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://www.cemented.ai/v1/contents \ --header 'Content-Type: application/json' \ --data '{ "urls": [ "https://example.org/study" ], "provider": "exa" }'Returns page text and verbatim highlights. Standard-retention responses cache each URL/contentSha256 pair before returning; zero-retention responses have null hashes. Use these pairs in Grounded drafts for server-backed source verification. Each successful provider call is billed, including calls completing after the response deadline. Provider failures are listed in the response; an empty result is not proof of no matches.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Examples
{ "urls": [ "https://example.org/study" ], "provider": "exa"}Responses
Section titled “ Responses ”Retrieval results
object
Unique id for this search call.
Merged, deduplicated results in fused-rank order.
object
Stable id for the result (its URL).
Publication date when a backend reports one. Usually ISO YYYY-MM-DD; a news backend may return a relative phrase.
Backend relevance score when one reports it (Exa, OpenAlex). Ordering uses the fused rank, not this value.
Page text (Exa, Firecrawl scrape) or the backend’s long excerpts joined with blank lines (Parallel, Perplexity), or a metadata header plus abstract (OpenAlex). Present unless contents.text is false.
Query-relevant passages, each a verbatim substring of text. Present unless contents.highlights is false.
Short backend-provided description or first excerpt.
Every backend that returned this page, best-ranked first. Agreement across backends raises the fused rank.
DOI parsed from the URL when the page is a scholarly work.
SHA-256 of text. For standard retention with text enabled, this hash and the exact result URL identify stored text; otherwise null. A grounded research draft can cite it as contentSha256 on a web source so quotes are verified against text Cemented retrieved rather than text the agent supplied.
One report per backend that was asked (or skipped).
object
ok returned results; error/timeout failed for this call (the other backends still count); unavailable was requested but is not configured or not permitted for this caller.
Vendor round trip in milliseconds.
Raw vendor cost for this call before Cemented’s markup.
Closed-registry code when status is not ok.
The backend’s HTTP status when the failure was an HTTP error response (for example 401 for a rejected credential or 429 for rate limiting); null otherwise.
Cost of the vendor calls behind this response.
object
Summed raw vendor cost before Cemented’s markup.
Example
{ "object": "contents", "elapsedMs": 100, "requestId": "search_example", "results": [], "providers": [], "costDollars": { "total": 0 }}Invalid input or unavailable provider
Authentication required
Insufficient credits or API key spend limit exceeded