Make your first request
Pass one or more URLs or document IDs and request highlights for the parts relevant to your task. In HTTP requests, provide them inids:
Example response
Example response
results includes page metadata and the content view you requested. Check statuses for the success or failure of every URL.
Output shapes
- Highlights
- Full text
- Summary
Highlights return relevant passages copied from the page. Start here for agents, RAG, and
factual lookups because highlights keep context smaller than full text.Set See Highlights for Dynamic Highlights and guidance on allocating context
across several pages.
highlights: true to enable highlights. An additional query parameter is recommended when using Contents to focus content extraction from the page:Content freshness
maxAgeHours controls how fresh the extracted page content must be.
Most requests should omit this field. Set it when stale page content would be unusable, such as for prices, availability, or frequently updated pages. Pair a low
maxAgeHours with livecrawlTimeout (milliseconds) to cap how long a fresh fetch may take.
Migrate from the deprecated livecrawl parameter
Migrate from the deprecated livecrawl parameter
The
livecrawl string parameter ("always", "preferred", "fallback", "never") is
deprecated in favor of maxAgeHours:Crawl subpages
Setsubpages to follow links from each starting URL. Add subpageTarget when you want Exa to prioritize particular site sections:
Images and favicons
Setextras.imageLinks to the number of image URLs you want from each page. Results also include
the site’s favicon and a representative image URL when available. On /search, this option
sits at contents.extras.imageLinks.
Common mistakes
/contents shares most of its options with /search but places them differently, and requests copied from older examples often carry parameters this endpoint never had. The API reference is the source of truth for the current schema.
A few behaviors that are easy to miss:
urlsandidsare interchangeable. Pass either the page URLs or theidvalues from a search response.- A fresh fetch (
maxAgeHours: 0or a low value) waits up tolivecrawlTimeoutmilliseconds (default 10000). Raise it to 12000–15000 for slow sites, or lower it when latency matters more than freshness. - The Python SDK uses snake_case for every key:
exa.get_contents(urls, highlights=True, max_age_hours=24).
Next steps
API reference
See every request parameter and response field.
Highlights
Compare regular and Dynamic Highlights for agent and RAG context.
Search API
Find relevant pages before extracting their content.
SDKs
Use Exa from Python or JavaScript.