Skip to main content
cURL

Get your Exa API key

Create a key in the dashboard. New accounts start with free credits.

Authorizations

x-api-key
string
header
required

Pass your Exa API key in the x-api-key header. You can also authenticate with Authorization: Bearer .

Body

application/json

Provide either ids or urls, but not both.

ids
string[]
required

Document IDs obtained from searches.

Required array length: 1 - 100 elements
Required string length: 1 - 2048
urls
string[]

URLs to crawl (backwards compatible with the ids parameter).

Required array length: 1 - 100 elements
Required string length: 1 - 2048
compliance
enum<string> | null

Enterprise-only compliance mode. Set to hipaa for HIPAA mode. Requires cache-only retrieval with supported parameters. See the HIPAA docs for details.

Available options:
hipaa
userIdentifier
string | null

An opaque ID your platform assigns to the end user this request is made for, such as a UUID. Lets Exa attribute usage to that end user rather than your whole team. Must not contain personal information such as an email address, phone number, username, or name. Hash such values before sending them. 1 to 64 characters: letters, digits, underscores, and hyphens. Retained even when your team has Zero Data Retention enabled. Does not affect results.

Required string length: 1 - 64
Pattern: ^[A-Za-z0-9_-]+$
Example:

"7f3a9c52-1d4e-4b8a-9e60-2c5d8a1f0b37"

text
default:false

Text extraction options for each result.

highlights
default:false

Text snippets the LLM identifies as most relevant from each page.

summary
object | null

Summary of the webpage.

extras
object | null

Extra parameters to pass.

livecrawlTimeout
integer | null
default:10000

The timeout for livecrawling in milliseconds.

Required range: 0 < x <= 90000
maxAgeHours
integer | null

Maximum age of cached content, in hours, up to 720. Cached content younger than this is used, and older pages are fetched fresh. 0 always fetches fresh content and -1 always uses the cache. When omitted, cached content is used when available and pages without it are fetched live.

Required range: -1 <= x <= 720
snapshotAsOf

Return the newest stored version of each page as of this instant. Accepts an ISO 8601 date-time (2026-01-15T00:00:00Z) or a date-only value (2026-01-15), which is interpreted as midnight UTC. Historical requests are served from stored versions only and never fetch the live page.

subpages
integer | null
default:0

The number of subpages to crawl. The actual number crawled may be limited by system constraints.

Required range: 0 <= x <= 100
subpageTarget

Term to find specific subpages of search results. Can be a single string or an array of strings.

Required string length: 1 - 100
context
deprecated

Deprecated. Use highlights or text instead. Returns page contents as a combined context string.

livecrawl
enum<string> | null
deprecated

Deprecated. Use maxAgeHours instead. Does not guarantee freshly fetched content. Cannot be combined with maxAgeHours.

Available options:
never,
always,
fallback,
preferred
crawledBeforeDate
string<date-time>
deprecated

Deprecated. Use snapshotAsOf instead. Alias of snapshotAsOf with identical behavior.

Response

OK

requestId
string

Unique identifier for the request.

results
object[]
statuses
object[]

Status information for each requested URL or document ID.

costDollars
object

Estimated dollar cost of the request. Which fields appear depends on the endpoint.

searchTime
number

Server-side processing time in milliseconds. May exclude output synthesis time, so it can be lower than end-to-end latency.

context
string
deprecated

Deprecated. Use results[].highlights or results[].text instead. Combined context string from search results.