All integrations

Exa

AI · AI

Neural web search, Websets, enrichments, imports, and agent runs on their own key.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

exa_delete_agent_runs_by_idWRITE

Delete an agent run via DELETE /agent/runs/{id}. Delete a stored Agent run. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held.

api
exa_delete_batches_by_idWRITE

Delete a batch via DELETE /batches/{id}. Soft-delete a batch in a terminal status. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. FEATURE-GATED: the Batch API is enabled per team on request. Measured 2026-09-24 with a working key and the required beta token, every route here answers HTTP 403 "The batch endpoint is not enabled for your team. Contact support to request access." An entitlement, not a credential fault; ask Exa support to enable it.

api
exa_delete_monitors_by_idWRITE

Delete a search monitor via DELETE /monitors/{id}. Deletes a monitor. This cannot be undone. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held.

api
exa_delete_v0_imports_by_idWRITE

Delete Import via DELETE /websets/v0/imports/{id}. Deletes a import. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_delete_v0_monitors_by_idWRITE

Delete a Websets Monitor via DELETE /websets/v0/monitors/{id}. Deletes a monitor. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_delete_v0_webhooks_by_idWRITE

Delete a Webhook via DELETE /websets/v0/webhooks/{id}. Deletes a Webhook. Its status becomes `inactive`, which stops future webhook deliveries to its URL. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_delete_v0_websets_by_idWRITE

Delete a Webset via DELETE /websets/v0/websets/{id}. Deletes a Webset. Once deleted, the Webset and all its Items will no longer be available. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_delete_v0_websets_by_webset_enrichments_by_idWRITE

Delete an Enrichment via DELETE /websets/v0/websets/{webset}/enrichments/{id}. When deleting an Enrichment, any running enrichments will be canceled and all existing `enrichment_result` generated by this Enrichment will no longer be available. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_delete_v0_websets_by_webset_items_by_idWRITE

Delete an Item via DELETE /websets/v0/websets/{webset}/items/{id}. Deletes an Item from the Webset. This will cancel any enrichment process for it. DESTRUCTIVE: the resource is removed and there is no undo. Read it first with the matching Get tool if you may need what it held. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_agent_runsREAD

List agent runs via GET /agent/runs. List Agent runs for your team, ordered from newest to oldest.

api
exa_get_agent_runs_by_idREAD

Get an agent run via GET /agent/runs/{id}. Retrieve a single Agent run by ID.

api
exa_get_agent_runs_by_id_eventsREAD

List agent run events via GET /agent/runs/{id}/events. List stored events for an Agent run. Set `Accept: text/event-stream` to replay stored events as server-sent events. Use `cursor` for JSON pagination or `Last-Event-ID` for SSE replay.

api
exa_get_batchesREAD

List batches via GET /batches. List batches for your team, ordered from newest to oldest. FEATURE-GATED: the Batch API is enabled per team on request. Measured 2026-09-24 with a working key and the required beta token, every route here answers HTTP 403 "The batch endpoint is not enabled for your team. Contact support to request access." An entitlement, not a credential fault; ask Exa support to enable it.

api
exa_get_batches_by_idREAD

Get a batch via GET /batches/{id}. Retrieve a single batch by ID. FEATURE-GATED: the Batch API is enabled per team on request. Measured 2026-09-24 with a working key and the required beta token, every route here answers HTTP 403 "The batch endpoint is not enabled for your team. Contact support to request access." An entitlement, not a credential fault; ask Exa support to enable it.

api
exa_get_monitorsREAD

List search monitors via GET /monitors. Lists all monitors for the authenticated team. Supports filtering by status and cursor-based pagination.

api
exa_get_monitors_by_idREAD

Get a search monitor via GET /monitors/{id}. Retrieves a single monitor by its ID.

api
exa_get_monitors_by_id_runsREAD

List search monitor runs via GET /monitors/{id}/runs. Lists all runs for a monitor with cursor-based pagination. Runs are returned in reverse chronological order.

api
exa_get_monitors_by_id_runs_by_runidREAD

Get a search monitor run via GET /monitors/{id}/runs/{runId}. Retrieves a single run by its ID, including the full output if the run is completed.

api
exa_get_v0_eventsREAD

List all Events via GET /websets/v0/events. List all events that have occurred in the system. You can paginate through the results using the `cursor` parameter. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_events_by_idREAD

Get an Event via GET /websets/v0/events/{id}. Get a single Event by id. You can subscribe to Events by creating a Webhook. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_importsREAD

List Imports via GET /websets/v0/imports. Lists all imports for the Webset. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_imports_by_idREAD

Get Import via GET /websets/v0/imports/{id}. Gets a specific import. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_monitorsREAD

List Websets Monitors via GET /websets/v0/monitors. Lists all monitors for the Webset. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_monitors_by_idREAD

Get a Websets Monitor via GET /websets/v0/monitors/{id}. Gets a specific monitor. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_monitors_by_monitor_runsREAD

List Websets Monitor runs via GET /websets/v0/monitors/{monitor}/runs. Lists all runs for the Monitor. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_monitors_by_monitor_runs_by_idREAD

Get a Websets Monitor run via GET /websets/v0/monitors/{monitor}/runs/{id}. Gets a specific monitor run. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_teams_meREAD

Get team info via GET /websets/v0/teams/me. Returns information about the authenticated team, including current concurrency usage and limits. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_webhooksREAD

List webhooks via GET /websets/v0/webhooks. Returns the active Webhooks for your team. You can paginate through the results using the `cursor` parameter. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_webhooks_by_idREAD

Get a Webhook via GET /websets/v0/webhooks/{id}. Returns a Webhook by id, including its status, subscribed events, target URL, and metadata. The signing `secret` is not returned. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_webhooks_by_id_attemptsREAD

List webhook attempts via GET /websets/v0/webhooks/{id}/attempts. List all attempts made by a Webhook ordered in descending order. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websetsREAD

List all Websets via GET /websets/v0/websets. Returns a list of Websets. You can paginate through the results using the `cursor` parameter. You can filter results using the `search` parameter to find Websets by ID, external ID, or title. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websets_by_idREAD

Get a Webset via GET /websets/v0/websets/{id}. Returns a Webset by `id` or `externalId`, including its status, searches, imports, enrichments, and monitors. Pass `expand=items` to include up to the first 100 items in the response. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websets_by_webset_enrichments_by_idREAD

Get an Enrichment via GET /websets/v0/websets/{webset}/enrichments/{id}. Returns an Enrichment configured on a Webset, including its status, description, format, and options. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websets_by_webset_itemsREAD

List all Items for a Webset via GET /websets/v0/websets/{webset}/items. Returns a list of Webset Items. You can paginate through the Items using the `cursor` parameter. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websets_by_webset_items_by_idREAD

Get an Item via GET /websets/v0/websets/{webset}/items/{id}. Returns a Webset Item. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_get_v0_websets_by_webset_searches_by_idREAD

Get a Search via GET /websets/v0/websets/{webset}/searches/{id}. Gets a Search by id PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_patch_monitors_by_idWRITE

Update a search monitor via PATCH /monitors/{id}. Updates an existing monitor. All fields are optional. For `search`, you can send a partial object containing only the fields you want to change. Set `trigger` to `null` to remove the schedule.

api
exa_patch_v0_imports_by_idWRITE

Update Import via PATCH /websets/v0/imports/{id}. Updates a import configuration. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_patch_v0_monitors_by_idWRITE

Update a Websets Monitor via PATCH /websets/v0/monitors/{id}. Updates a monitor configuration. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_patch_v0_webhooks_by_idWRITE

Update a Webhook via PATCH /websets/v0/webhooks/{id}. Updates the target URL, subscribed events, or metadata of a Webhook. Omitted fields are left unchanged. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_patch_v0_websets_by_webset_enrichments_by_idWRITE

Update an Enrichment via PATCH /websets/v0/websets/{webset}/enrichments/{id}. Update an Enrichment configuration for a Webset. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_agent_runsWRITE

Create an agent run via POST /agent/runs. Create an asynchronous Agent run. By default, the API returns the run object immediately. Set `Accept: text/event-stream` to stream run lifecycle events until the run reaches a terminal status. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_agent_runs_by_id_cancelWRITE

Cancel an agent run via POST /agent/runs/{id}/cancel. Cancel a queued or running Agent run immediately without returning any results. You are billed for usage accrued before cancellation. If the run has already reached a terminal status, the API returns the existing run.

api
exa_post_agent_runs_by_id_stopWRITE

Stop an agent run via POST /agent/runs/{id}/stop. Complete a running Agent run early, returning the results gathered so far. You are billed for usage accrued before the stop. Currently supported only for `max` effort runs and requires the `Exa-Beta: agent-max-effort-2026-07-27` header. If the run has already reached a terminal status, the API returns the existing run.

api
exa_post_answerWRITE

Answer a question via POST /answer. Performs a search based on the query and generates either a direct answer or a detailed summary with citations, depending on the query type. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_batchesWRITE

Create a batch via POST /batches. Create a batch of requests to run asynchronously. Each request is dispatched to its target route and results are made available for download when the batch completes. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key. FEATURE-GATED: the Batch API is enabled per team on request. Measured 2026-09-24 with a working key and the required beta token, every route here answers HTTP 403 "The batch endpoint is not enabled for your team. Contact support to request access." An entitlement, not a credential fault; ask Exa support to enable it.

api
exa_post_batches_by_id_cancelWRITE

Cancel a batch via POST /batches/{id}/cancel. Request cancellation of a batch. The batch stops scheduling new requests and drains in-flight work before settling to `cancelled`. Cancelling a batch that is already `cancelling` or `cancelled` is idempotent and returns the batch unchanged. A batch that has already reached a terminal status (`completed` or `expired`) cannot be cancelled and the request fails with a 409. FEATURE-GATED: the Batch API is enabled per team on request. Measured 2026-09-24 with a working key and the required beta token, every route here answers HTTP 403 "The batch endpoint is not enabled for your team. Contact support to request access." An entitlement, not a credential fault; ask Exa support to enable it.

api
exa_post_contentsWRITE

Get page contents via POST /contents. Fetch the contents of pages Exa has already crawled, by `urls` or by the result `ids` a previous search returned -- one of the two is required. Ask for `text` (optionally capped with `maxCharacters`), `highlights` (query-relevant excerpts), `summary` (optionally against a JSON schema), `livecrawl` behaviour when the page is not cached, and `subpages`/`extras` for links and images. This is the read half of search: it retrieves page content and never runs a new query. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_findsimilarWRITE

Find similar pages via POST /findSimilar. Find links similar to the provided URL and optionally retrieve their contents. Deprecated: prefer `/search` with a query describing the source. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_monitorsWRITE

Create a search monitor via POST /monitors. Creates a new Monitor to run recurring Exa searches on a schedule. Monitors automatically execute your search query on a recurring schedule and deliver results to your webhook endpoint with automatic deduplication: - **Date-based filtering** only fetches content since the last run - **Semantic deduplication** tracks previous outputs to surface only new developments The response includes a `webhookSecret` that is only returned once at creation time. Store it securely for webhook signature verification. THE WEBHOOK SIGNING SECRET IS REDACTED FROM THIS RESULT. Exa returns it only here and no endpoint reads it back, so it is credential material arriving in an ordinary reply; Agentic Fabriq replaces it before the result reaches an agent or the audit pipeline. Everything else is returned untouched. If you need to hold the secret in order to verify delivery signatures, create the resource with Exa's own API or dashboard.

api
exa_post_monitors_batchWRITE

Batch action on search monitors via POST /monitors/batch. Perform a batch action on monitors matching the provided filters. Supported actions: - **delete**: Permanently remove matching monitors - **pause**: Pause matching monitors - **unpause**: Unpause matching monitors Use `dry_run: true` (the default) to preview which monitors would be affected before performing the action. Results are paginated via the `limit` parameter; loop until `has_more` is `false` to process all matching monitors.

api
exa_post_monitors_by_id_triggerWRITE

Trigger a search monitor via POST /monitors/{id}/trigger. Triggers a run immediately, regardless of the schedule. Works for monitors with status `active` or `paused`. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_searchWRITE

Search the web via POST /search. Perform a search with an Exa prompt-engineered query and retrieve a list of relevant results. Optionally get contents. COST: this is a BILLED Exa call charged to the connected team's credit balance -- searches, content fetches, answers and agent runs are priced per call (and an agent run per unit of effort), so an agent allowed to call it can spend the account's balance. A 402 from Exa is that balance, not the key.

api
exa_post_v0_importsWRITE

Create an Import via POST /websets/v0/imports. Creates a new import to upload your data into Websets. Imports can be used to: - **Enrich**: Enhance your data with additional information using our AI-powered enrichment engine - **Search**: Query your data using Websets' agentic search with natural language filters - **Exclude**: Prevent duplicate or already known results from appearing in your searches Once the import is created, you can upload your data to the returned `uploadUrl` until `uploadValidUntil` (by default 1 hour). PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_monitorsWRITE

Create a Websets Monitor via POST /websets/v0/monitors. Creates a new `Monitor` to continuously keep your Websets updated with fresh data. Monitors automatically run on your defined schedule to ensure your Websets stay current without manual intervention: - **Find new content**: Execute `search` operations to discover fresh items matching your criteria - **Update existing content**: Run `refresh` operations to update items contents and enrichments - **Automated scheduling**: Configure `cron` expressions and `timezone` for precise scheduling control PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_webhooksWRITE

Create a Webhook via POST /websets/v0/webhooks. Creates a Webhook that delivers the selected events to your URL as they occur. The response includes the signing `secret` used to verify deliveries; it is only returned on creation. THE WEBHOOK SIGNING SECRET IS REDACTED FROM THIS RESULT. Exa returns it only here and no endpoint reads it back, so it is credential material arriving in an ordinary reply; Agentic Fabriq replaces it before the result reaches an agent or the audit pipeline. Everything else is returned untouched. If you need to hold the secret in order to verify delivery signatures, create the resource with Exa's own API or dashboard. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websetsWRITE

Create a Webset via POST /websets/v0/websets. Creates a new Webset with optional search, import, and enrichment configurations. The Webset will automatically begin processing once created. You can specify an `externalId` to reference the Webset with your own identifiers for easier integration. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_idWRITE

Update a Webset via POST /websets/v0/websets/{id}. Updates the `title` or `metadata` of a Webset. Searches, imports, and enrichments are managed through their own endpoints. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_id_cancelWRITE

Cancel a running Webset via POST /websets/v0/websets/{id}/cancel. Cancels all operations being performed on a Webset. Any enrichment or search will be stopped and the Webset will be marked as `idle`. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_webset_enrichmentsWRITE

Create an Enrichment via POST /websets/v0/websets/{webset}/enrichments. Create an Enrichment for a Webset. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_webset_enrichments_by_id_cancelWRITE

Cancel a running Enrichment via POST /websets/v0/websets/{webset}/enrichments/{id}/cancel. All running enrichments will be canceled. You can not resume an Enrichment after it has been canceled. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_webset_searchesWRITE

Create a Search via POST /websets/v0/websets/{webset}/searches. Creates a new Search for the Webset. The default behavior is to reuse the previous Search results and evaluate them against the new criteria. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_by_webset_searches_by_id_cancelWRITE

Cancel a running Search via POST /websets/v0/websets/{webset}/searches/{id}/cancel. Cancels a currently running Search. You can cancel all searches at once by using the `websets/:webset/cancel` endpoint. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api
exa_post_v0_websets_previewWRITE

Preview a webset via POST /websets/v0/websets/preview. Preview how a search query will be decomposed before creating a webset. This endpoint performs the same query analysis that happens during webset creation, allowing you to see the detected entity type, generated search criteria, and available enrichment columns in advance. Use this to help users understand how their search will be interpreted before committing to a full webset creation. PLAN-GATED: Exa's Websets surface needs a Pro plan. Measured 2026-09-24 with a working key on a non-Pro team, every route here answers HTTP 401 "Your team does not have access to the API. Upgrade to a Pro plan to get access." That is an entitlement, not a credential fault: the key is fine, re-pasting it changes nothing, and the remedy is the plan.

api

Put Exa behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.