openapi: 3.1.0 paths: /v0/websets: post: description: >- 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. operationId: websets-create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateWebsetParameters" responses: "201": description: Webset created content: application/json: schema: $ref: "#/components/schemas/Webset" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "409": description: Webset with this externalId already exists headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create a Webset tags: &ref_0 - Websets security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.create({ search: { query: "Tech companies in San Francisco", count: 10 } }); console.log(`Created webset: ${webset.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.create(params={ 'search': { 'query': 'Tech companies in San Francisco', 'count': 10 } }) print(f'Created webset: {webset.id}') - lang: javascript label: Filter within CSV Import source: |- // Filter a CSV import by criteria (no top-level import needed) import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.create({ search: { query: "people who changed jobs", criteria: ["changed jobs in the last 6 months"], count: 10, scope: [{ source: "import", id: "import_abc123" // Your existing import ID }] } }); console.log(`Filtered webset: ${webset.id}`); - lang: python label: Filter within CSV Import source: |- from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.create(params={ 'search': { 'query': 'people who changed jobs', 'criteria': ['changed jobs in the last 6 months'], 'count': 10, 'scope': [{ 'source': 'import', 'id': 'import_abc123' # Your existing import ID }] } }) print(f'Filtered webset: {webset.id}') - lang: javascript label: Hop Search (Graph Traversal) source: |- // Find related entities (e.g., companies -> investors) import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.create({ search: { query: "investors", scope: [{ source: "webset", id: "webset_companies", relationship: { definition: "investors of", limit: 3 // Find up to 3 investors per company } }] } }); console.log(`Hop search webset: ${webset.id}`); - lang: python label: Hop Search (Graph Traversal) source: |- from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.create(params={ 'search': { 'query': 'investors', 'scope': [{ 'source': 'webset', 'id': 'webset_companies', 'relationship': { 'definition': 'investors of', 'limit': 3 # Find up to 3 investors per company } }] } }) print(f'Hop search webset: {webset.id}') get: description: |- Returns a list of Websets. You can paginate through the results using the `cursor` parameter. operationId: websets-list parameters: - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of Websets to return schema: minimum: 1 maximum: 100 default: 25 type: number responses: "200": description: List of Websets content: application/json: schema: $ref: "#/components/schemas/ListWebsetsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List all Websets tags: *ref_0 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); // List websets with optional pagination const websets = await exa.websets.list({ limit: 20 // Optional: max results per page }); console.log(`Found ${websets.data.length} websets`); websets.data.forEach(webset => { console.log(`- ${webset.id}: ${webset.status}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') # List websets with optional pagination websets_response = exa.websets.list( limit=20 # Optional: max results per page ) print(f"Found {len(websets_response.data)} websets") for webset in websets_response.data: print(f"- {webset.id}: {webset.status}") /v0/websets/{id}: get: operationId: websets-get parameters: - name: id required: true in: path description: The id or externalId of the Webset. schema: type: string - name: expand required: false in: query description: Expand the response with the specified resources schema: type: array items: type: string enum: - items responses: "200": description: Webset content: application/json: schema: $ref: "#/components/schemas/GetWebsetResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webset not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get a Webset tags: *ref_0 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.get('webset_id'); console.log(`Webset: ${webset.id} - ${webset.status}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.get('webset_id') print(f'Webset: {webset.id} - {webset.status}') post: operationId: websets-update parameters: - name: id required: true in: path description: The id or externalId of the Webset schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateWebsetRequest" responses: "200": description: Webset updated content: application/json: schema: $ref: "#/components/schemas/Webset" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webset not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Update a Webset tags: *ref_0 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.update('webset_id', { name: 'Updated Webset Name', description: 'Updated description' }); console.log(`Updated webset: ${webset.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.update('webset_id', params={ 'name': 'Updated Webset Name', 'description': 'Updated description' }) print(f'Updated webset: {webset.id}') delete: description: |- Deletes a Webset. Once deleted, the Webset and all its Items will no longer be available. operationId: websets-delete parameters: - name: id required: true in: path description: The id or externalId of the Webset schema: type: string responses: "200": description: Webset deleted content: application/json: schema: $ref: "#/components/schemas/Webset" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webset not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete a Webset tags: *ref_0 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.delete('webset_id'); console.log('Webset deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.delete('webset_id') print('Webset deleted successfully') /v0/websets/{id}/cancel: post: description: >- Cancels all operations being performed on a Webset. Any enrichment or search will be stopped and the Webset will be marked as `idle`. operationId: websets-cancel parameters: - name: id required: true in: path description: The id or externalId of the Webset schema: type: string responses: "200": description: Webset canceled content: application/json: schema: $ref: "#/components/schemas/Webset" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Cancel a running Webset tags: *ref_0 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webset = await exa.websets.cancel('webset_id'); console.log(`Cancelled webset: ${webset.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webset = exa.websets.cancel('webset_id') print(f'Cancelled webset: {webset.id}') /v0/websets/preview: post: description: >- 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. operationId: websets-preview parameters: - name: search required: false in: path description: Weather you want to search for a preview list of items or not schema: type: boolean requestBody: required: true description: Search parameters content: application/json: schema: $ref: "#/components/schemas/PreviewWebsetParameters" responses: "200": description: Preview of the webset content: application/json: schema: $ref: "#/components/schemas/PreviewWebsetResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "422": description: Unable to detect entity or criteria from query headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Preview a webset tags: - Websets Preview security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const preview = await exa.websets.preview({ search: { query: 'Marketing agencies based in the US, that focus on consumer products. Get brands worked with and city', }, }); console.log('Search criteria:', preview.search.criteria); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') preview = exa.websets.preview(params={ 'query': 'Marketing agencies based in the US, that focus on consumer products. Get brands worked with and city' }) print('Search criteria:', preview.search.criteria) print('Available enrichments:', len(preview.enrichments)) /v0/websets/{webset}/items/{id}: get: description: Returns a Webset Item. operationId: websets-items-get parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: id required: true in: path description: The id of the Webset item schema: type: string responses: "200": description: Webset Item content: application/json: schema: $ref: "#/components/schemas/WebsetItem" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get an Item tags: &ref_1 - Items security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const item = await exa.websets.items.get('webset_id', 'item_id'); console.log(`Item: ${item.id} - ${item.properties.name}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') item = exa.websets.items.get('webset_id', 'item_id') print(f'Item: {item.id} - {item.properties.name}') delete: description: |- Deletes an Item from the Webset. This will cancel any enrichment process for it. operationId: websets-items-delete parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: id required: true in: path description: The id of the Webset item schema: type: string responses: "200": description: Webset Item deleted content: application/json: schema: $ref: "#/components/schemas/WebsetItem" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete an Item tags: *ref_1 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.items.delete('webset_id', 'item_id'); console.log('Item deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.items.delete('webset_id', 'item_id') print('Item deleted successfully') /v0/websets/{webset}/items: get: description: |- Returns a list of Webset Items. You can paginate through the Items using the `cursor` parameter. operationId: websets-items-list parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 100 default: 20 type: number - name: sourceId required: false in: query description: The id of the source schema: type: string responses: "200": description: Webset Items content: application/json: schema: $ref: "#/components/schemas/ListWebsetItemResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List all Items for a Webset tags: *ref_1 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const items = await exa.websets.items.list('webset_id', { limit: 20 }); console.log(`Found ${items.data.length} items`); items.data.forEach(item => { console.log(`- ${item.id}: ${item.properties.name}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') items = exa.websets.items.list('webset_id', limit=20) print(f'Found {len(items.data)} items') for item in items.data: print(f'- {item.id}: {item.properties.name}') /v0/websets/{webset}/enrichments: post: description: Create an Enrichment for a Webset. operationId: websets-enrichments-create parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateEnrichmentParameters" responses: "200": description: Enrichment created content: application/json: schema: $ref: "#/components/schemas/WebsetEnrichment" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create an Enrichment tags: &ref_2 - Enrichments security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const enrichment = await exa.websets.enrichments.create('webset_id', { description: 'Company revenue information', format: 'text' }); console.log(`Created enrichment: ${enrichment.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') enrichment = exa.websets.enrichments.create('webset_id', params={ 'description': 'Company revenue information', 'format': 'text' }) print(f'Created enrichment: {enrichment.id}') /v0/websets/{webset}/enrichments/{id}: patch: description: Update an Enrichment configuration for a Webset. operationId: websets-enrichments-update parameters: - name: webset required: true in: path schema: type: string - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateEnrichmentParameters" responses: "200": description: "" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Update an Enrichment tags: *ref_2 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const enrichment = await exa.websets.enrichments.update('webset_id', 'enrichment_id', { description: 'Updated company revenue and growth metrics', format: 'number' }); console.log(`Updated enrichment: ${enrichment.id}`); - lang: python label: Python source: >- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') enrichment = exa.websets.enrichments.update('webset_id', 'enrichment_id', params={ 'description': 'Updated company revenue and growth metrics', 'format': 'number' }) print(f'Updated enrichment: {enrichment.id}') get: operationId: websets-enrichments-get parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: id required: true in: path description: The id of the Enrichment schema: type: string responses: "200": description: Enrichment content: application/json: schema: $ref: "#/components/schemas/WebsetEnrichment" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get an Enrichment tags: *ref_2 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const enrichment = await exa.websets.enrichments.get('webset_id', 'enrichment_id'); console.log(`Enrichment: ${enrichment.id} - ${enrichment.status}`); - lang: python label: Python source: >- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') enrichment = exa.websets.enrichments.get('webset_id', 'enrichment_id') print(f'Enrichment: {enrichment.id} - {enrichment.status}') delete: description: >- When deleting an Enrichment, any running enrichments will be canceled and all existing `enrichment_result` generated by this Enrichment will no longer be available. operationId: websets-enrichments-delete parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: id required: true in: path description: The id of the Enrichment schema: type: string responses: "200": description: Enrichment deleted content: application/json: schema: $ref: "#/components/schemas/WebsetEnrichment" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete an Enrichment tags: *ref_2 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.enrichments.delete('webset_id', 'enrichment_id'); console.log('Enrichment deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.enrichments.delete('webset_id', 'enrichment_id') print('Enrichment deleted successfully') /v0/websets/{webset}/enrichments/{id}/cancel: post: description: >- All running enrichments will be canceled. You can not resume an Enrichment after it has been canceled. operationId: websets-enrichments-cancel parameters: - name: webset required: true in: path description: The id or externalId of the Webset schema: type: string - name: id required: true in: path description: The id of the Enrichment schema: type: string responses: "200": description: Enrichment cancelled content: application/json: schema: $ref: "#/components/schemas/WebsetEnrichment" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Cancel a running Enrichment tags: *ref_2 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const enrichment = await exa.websets.enrichments.cancel('webset_id', 'enrichment_id'); console.log(`Cancelled enrichment: ${enrichment.id}`); - lang: python label: Python source: >- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') enrichment = exa.websets.enrichments.cancel('webset_id', 'enrichment_id') print(f'Cancelled enrichment: {enrichment.id}') /v0/webhooks: post: description: >- Webhooks let you get notifications when things happen in your Websets. When you create a webhook, you choose which events you want to know about and where to send the notifications. When an event happens, Exa sends an HTTP POST request to your webhook URL with: - Event details (type, time, ID) - Full data of what triggered the event - A signature to verify the request came from Exa The webhook starts as `active` and begins getting notifications right away. You'll get a secret key for checking webhook signatures - save this safely as it's only shown once when you create the webhook. operationId: webhooks-create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateWebhookParameters" responses: "200": description: Webhook content: application/json: schema: $ref: "#/components/schemas/Webhook" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create a Webhook tags: &ref_3 - Webhooks security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webhook = await exa.websets.webhooks.create({ url: 'https://api.yourapp.com/webhooks/exa', events: ['webset.completed', 'enrichment.completed'] }); console.log(`Created webhook: ${webhook.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webhook = exa.websets.webhooks.create(params={ 'url': 'https://api.yourapp.com/webhooks/exa', 'events': ['webset.completed', 'enrichment.completed'] }) print(f'Created webhook: {webhook.id}') get: description: >- Get a list of all webhooks in your account. The results come in pages. Use `limit` to set how many webhooks to get per page (up to 200). Use `cursor` to get the next page of results. operationId: webhooks-list parameters: - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 200 default: 25 type: number responses: "200": description: List of webhooks content: application/json: schema: $ref: "#/components/schemas/ListWebhooksResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List webhooks tags: *ref_3 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webhooks = await exa.websets.webhooks.list(); console.log(`Found ${webhooks.data.length} webhooks`); webhooks.data.forEach(webhook => { console.log(`- ${webhook.id}: ${webhook.url}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webhooks = exa.websets.webhooks.list() print(f'Found {len(webhooks.data)} webhooks') for webhook in webhooks.data: print(f'- {webhook.id}: {webhook.url}') /v0/webhooks/{id}: get: description: >- Get information about a webhook using its ID. The webhook secret is not shown here for security - you only get it when you first create the webhook. operationId: webhooks-get parameters: - name: id required: true in: path description: The id of the webhook schema: type: string responses: "200": description: Webhook content: application/json: schema: $ref: "#/components/schemas/Webhook" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webhook not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get a Webhook tags: *ref_3 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webhook = await exa.websets.webhooks.get('webhook_id'); console.log(`Webhook: ${webhook.id} - ${webhook.url}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webhook = exa.websets.webhooks.get('webhook_id') print(f'Webhook: {webhook.id} - {webhook.url}') patch: description: >- Change a webhook's settings. You can update: - Events: Add or remove which events you want to hear about - URL: Change where notifications are sent - Metadata: Update custom data linked to the webhook Changes happen right away. If you change the events list, the webhook will start or stop getting notifications for those events immediately. The webhook keeps its current status (`active` or `inactive`) when you update it. operationId: webhooks-update parameters: - name: id required: true in: path description: The id of the webhook schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateWebhookParameters" responses: "200": description: Webhook content: application/json: schema: $ref: "#/components/schemas/Webhook" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webhook not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Update a Webhook tags: *ref_3 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const webhook = await exa.websets.webhooks.update('webhook_id', { url: 'https://api.yourapp.com/webhooks/exa-updated', events: ['webset.completed'] }); console.log(`Updated webhook: ${webhook.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') webhook = exa.websets.webhooks.update('webhook_id', params={ 'url': 'https://api.yourapp.com/webhooks/exa-updated', 'events': ['webset.completed'] }) print(f'Updated webhook: {webhook.id}') delete: description: >- Remove a webhook from your account. Once deleted, the webhook stops getting notifications right away and cannot be brought back. Important notes: - The webhook stops working as soon as you delete it - You cannot undo this - you'll need to create a new webhook if you want it back - Any notifications currently being sent may still complete operationId: webhooks-delete parameters: - name: id required: true in: path description: The id of the webhook schema: type: string responses: "200": description: Webhook content: application/json: schema: $ref: "#/components/schemas/Webhook" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Webhook not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete a Webhook tags: *ref_3 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.webhooks.delete('webhook_id'); console.log('Webhook deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.webhooks.delete('webhook_id') print('Webhook deleted successfully') /v0/webhooks/{id}/attempts: get: description: List all attempts made by a Webhook ordered in descending order. operationId: webhooks-attempts-list parameters: - name: id required: true in: path description: The ID of the webhook schema: type: string - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 200 default: 25 type: number - name: eventType required: false in: query description: The type of event to filter by schema: type: string enum: - webset.created - webset.deleted - webset.paused - webset.idle - webset.search.created - webset.search.canceled - webset.search.completed - webset.search.updated - import.created - import.completed - webset.item.created - webset.item.enriched - monitor.created - monitor.updated - monitor.deleted - monitor.run.created - monitor.run.completed - webset.export.created - webset.export.completed - name: successful required: false in: query description: Filter attempts by their success status schema: type: boolean responses: "200": description: List of webhook attempts content: application/json: schema: $ref: "#/components/schemas/ListWebhookAttemptsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List webhook attempts tags: - Webhooks Attempts security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const attempts = await exa.websets.webhooks.listAttempts('webhook_id', { limit: 20 }); console.log(`Found ${attempts.data.length} webhook attempts`); attempts.data.forEach(attempt => { console.log(`- ${attempt.id}: ${attempt.status}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') attempts = exa.websets.webhooks.attempts.list('webhook_id') print(f'Found {len(attempts.data)} webhook attempts') for attempt in attempts.data: print(f'- {attempt.id}: {attempt.status}') /v0/events: get: description: |- List all events that have occurred in the system. You can paginate through the results using the `cursor` parameter. operationId: events-list parameters: - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 200 default: 25 type: number - name: types required: false in: query description: The types of events to filter by schema: type: array items: type: string enum: - webset.created - webset.deleted - webset.paused - webset.idle - webset.search.created - webset.search.canceled - webset.search.completed - webset.search.updated - import.created - import.completed - webset.item.created - webset.item.enriched - monitor.created - monitor.updated - monitor.deleted - monitor.run.created - monitor.run.completed - webset.export.created - webset.export.completed - name: createdBefore required: false in: query description: >- Filter events created before or at this timestamp (inclusive). Must be a valid ISO 8601 datetime string. All times are in UTC. schema: format: date-time type: string - name: createdAfter required: false in: query description: >- Filter events created after or at this timestamp (inclusive). Must be a valid ISO 8601 datetime string. All times are in UTC. schema: format: date-time type: string responses: "200": description: List of events content: application/json: schema: $ref: "#/components/schemas/ListEventsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List all Events tags: &ref_4 - Events security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const events = await exa.websets.events.list({ limit: 20 }); console.log(`Found ${events.data.length} events`); events.data.forEach(event => { console.log(`- ${event.id}: ${event.type} at ${event.createdAt}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') events = exa.websets.events.list(limit=20) print(f'Found {len(events.data)} events') for event in events.data: print(f'- {event.id}: {event.type}') /v0/events/{id}: get: description: |- Get a single Event by id. You can subscribe to Events by creating a Webhook. operationId: events-get parameters: - name: id required: true in: path description: The id of the event schema: type: string responses: "200": description: "" content: application/json: schema: $ref: "#/components/schemas/Event" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true "404": description: Event not found headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get an Event tags: *ref_4 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const event = await exa.websets.events.get('event_id'); console.log(`Event: ${event.id} - ${event.type}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') event = exa.websets.events.get('event_id') print(f'Event: {event.id} - {event.type}') /v0/websets/{webset}/searches: post: description: >- Creates a new Search for the Webset. The default behavior is to reuse the previous Search results and evaluate them against the new criteria. operationId: websets-searches-create parameters: - name: webset required: true in: path description: The id of the Webset schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateWebsetSearchParameters" responses: "200": description: Webset Search created content: application/json: schema: $ref: "#/components/schemas/WebsetSearch" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create a Search tags: &ref_5 - Searches security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const search = await exa.websets.searches.create('webset_id', { query: 'additional companies to add', count: 5 }); console.log(`Created search: ${search.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') search = exa.websets.searches.create('webset_id', params={ 'query': 'additional companies to add', 'count': 5 }) print(f'Created search: {search.id}') /v0/websets/{webset}/searches/{id}: get: description: Gets a Search by id operationId: websets-searches-get parameters: - name: webset required: true in: path description: The id of the Webset schema: type: string - name: id required: true in: path description: The id of the Search schema: type: string responses: "200": description: Search retrieved content: application/json: schema: $ref: "#/components/schemas/WebsetSearch" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get a Search tags: *ref_5 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const search = await exa.websets.searches.get('webset_id', 'search_id'); console.log(`Search: ${search.id} - ${search.status}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') search = exa.websets.searches.get('webset_id', 'search_id') print(f'Search: {search.id} - {search.status}') /v0/websets/{webset}/searches/{id}/cancel: post: description: >- Cancels a currently running Search. You can cancel all searches at once by using the `websets/:webset/cancel` endpoint. operationId: websets-searches-cancel parameters: - name: webset required: true in: path description: The id of the Webset schema: type: string - name: id required: true in: path description: The id of the Search schema: type: string responses: "200": description: Search canceled content: application/json: schema: $ref: "#/components/schemas/WebsetSearch" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Cancel a running Search tags: *ref_5 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const search = await exa.websets.searches.cancel('webset_id', 'search_id'); console.log(`Cancelled search: ${search.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') search = exa.websets.searches.cancel('webset_id', 'search_id') print(f'Cancelled search: {search.id}') /v0/monitors: post: description: >- 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 operationId: monitors-create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateMonitorParameters" responses: "201": description: Monitor created successfully content: application/json: schema: $ref: "#/components/schemas/Monitor" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create a Monitor tags: &ref_6 - Monitors security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const monitor = await exa.websets.monitors.create({ websetId: 'webset_id', cadence: { cron: '0 9 * * 1', // Every Monday at 9 AM timezone: 'America/New_York' }, behavior: { type: 'search', config: { behavior: 'append', query: 'new companies to monitor', count: 10 } } }); console.log(`Created monitor: ${monitor.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') monitor = exa.websets.monitors.create(params={ 'websetId': 'webset_id', 'cadence': { 'cron': '0 9 * * 1', # Every Monday at 9 AM 'timezone': 'America/New_York' }, 'behavior': { 'type': 'search', 'config': { 'behavior': 'append', 'query': 'new companies to monitor', 'count': 10 } } }) print(f'Created monitor: {monitor.id}') get: description: Lists all monitors for the Webset. operationId: monitors-list parameters: - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 200 default: 25 type: number - name: websetId required: false in: query description: The id of the Webset to list monitors for schema: type: string responses: "200": description: List of monitors content: application/json: schema: $ref: "#/components/schemas/ListMonitorsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List Monitors tags: *ref_6 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const monitors = await exa.websets.monitors.list({ webset_id: 'webset_id' }); console.log(`Found ${monitors.data.length} monitors`); monitors.data.forEach(monitor => { console.log(`- ${monitor.id}: ${monitor.status}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') monitors = exa.websets.monitors.list(webset_id='webset_id') print(f'Found {len(monitors.data)} monitors') for monitor in monitors.data: print(f'- {monitor.id}: {monitor.status}') /v0/monitors/{id}: get: description: Gets a specific monitor. operationId: monitors-get parameters: - name: id required: true in: path description: The id of the Monitor schema: type: string responses: "200": description: Monitor details content: application/json: schema: $ref: "#/components/schemas/Monitor" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get Monitor tags: *ref_6 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const monitor = await exa.websets.monitors.get('monitor_id'); console.log(`Monitor: ${monitor.id} - ${monitor.status}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') monitor = exa.websets.monitors.get('monitor_id') print(f'Monitor: {monitor.id} - {monitor.status}') patch: description: Updates a monitor configuration. operationId: monitors-update parameters: - name: id required: true in: path description: The id of the Monitor schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateMonitor" responses: "200": description: Monitor updated successfully content: application/json: schema: $ref: "#/components/schemas/Monitor" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Update Monitor tags: *ref_6 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const monitor = await exa.websets.monitors.update('monitor_id', { cadence: { cron: '0 14 * * *', // Every day at 2 PM timezone: 'America/New_York' } }); console.log(`Updated monitor: ${monitor.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') monitor = exa.websets.monitors.update('monitor_id', params={ 'cadence': { 'cron': '0 14 * * *', # Every day at 2 PM 'timezone': 'America/New_York' } }) print(f'Updated monitor: {monitor.id}') delete: description: Deletes a monitor. operationId: monitors-delete parameters: - name: id required: true in: path description: The id of the Monitor schema: type: string responses: "200": description: Monitor deleted successfully content: application/json: schema: $ref: "#/components/schemas/Monitor" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete Monitor tags: *ref_6 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.monitors.delete('monitor_id'); console.log('Monitor deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.monitors.delete('monitor_id') print('Monitor deleted successfully') /v0/monitors/{monitor}/runs: get: description: Lists all runs for the Monitor. operationId: monitors-runs-list parameters: - name: monitor required: true in: path description: The id of the Monitor to list runs for schema: type: string responses: "200": description: List of monitor runs content: application/json: schema: $ref: "#/components/schemas/ListMonitorRunsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List Monitor Runs tags: &ref_7 - Monitors Runs security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const runs = await exa.websets.monitors.runs.list('monitor_id'); console.log(`Found ${runs.data.length} monitor runs`); runs.data.forEach(run => { console.log(`- ${run.id}: ${run.status}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') runs = exa.websets.monitors.runs.list('monitor_id') print(f'Found {len(runs.data)} monitor runs') for run in runs.data: print(f'- {run.id}: {run.status}') /v0/monitors/{monitor}/runs/{id}: get: description: Gets a specific monitor run. operationId: monitors-runs-get parameters: - name: monitor required: true in: path description: The id of the Monitor to get the run for schema: type: string - name: id required: true in: path schema: type: string responses: "200": description: Monitor run details content: application/json: schema: $ref: "#/components/schemas/MonitorRun" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get Monitor Run tags: *ref_7 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const run = await exa.websets.monitors.runs.get('monitor_id', 'run_id'); console.log(`Monitor run: ${run.id} - ${run.status}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') run = exa.websets.monitors.runs.get('monitor_id', 'run_id') print(f'Monitor run: {run.id} - {run.status}') /v0/imports: post: description: >- 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). operationId: imports-create parameters: [] requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CreateImportParameters" responses: "201": description: Import created successfully content: application/json: schema: $ref: "#/components/schemas/CreateImportResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Create an Import tags: &ref_8 - Imports security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const importJob = await exa.websets.imports.create('webset_id', { source: { type: 'csv', url: 'https://example.com/companies.csv' } }); console.log(`Created import: ${importJob.id}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') import_job = exa.websets.imports.create('webset_id', params={ 'source': { 'type': 'csv', 'url': 'https://example.com/companies.csv' } }) print(f'Created import: {import_job.id}') get: description: Lists all imports for the Webset. operationId: imports-list parameters: - name: cursor required: false in: query description: The cursor to paginate through the results schema: minLength: 1 type: string - name: limit required: false in: query description: The number of results to return schema: minimum: 1 maximum: 200 default: 25 type: number responses: "200": description: List of imports content: application/json: schema: $ref: "#/components/schemas/ListImportsResponse" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: List Imports tags: *ref_8 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const imports = await exa.websets.imports.list({ webset_id: 'webset_id' }); console.log(`Found ${imports.data.length} imports`); imports.data.forEach(importJob => { console.log(`- ${importJob.id}: ${importJob.status}`); }); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') imports = exa.websets.imports.list(webset_id='webset_id') print(f'Found {len(imports.data)} imports') for import_job in imports.data: print(f'- {import_job.id}: {import_job.status}') /v0/imports/{id}: get: description: Gets a specific import. operationId: imports-get parameters: - name: id required: true in: path description: The id of the Import schema: type: string responses: "200": description: Import details content: application/json: schema: $ref: "#/components/schemas/Import" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Get Import tags: *ref_8 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const importJob = await exa.websets.imports.get('webset_id', 'import_id'); console.log(`Import: ${importJob.id} - ${importJob.status}`); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') import_job = exa.websets.imports.get('webset_id', 'import_id') print(f'Import: {import_job.id} - {import_job.status}') patch: description: Updates a import configuration. operationId: imports-update parameters: - name: id required: true in: path description: The id of the Import schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/UpdateImport" responses: "200": description: Import updated successfully content: application/json: schema: $ref: "#/components/schemas/Import" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Update Import tags: *ref_8 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: >- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); const importJob = await exa.websets.imports.update('webset_id', 'import_id', { name: 'Updated Import Name' }); console.log(`Updated import: ${importJob.id}`); - lang: python label: Python source: >- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') import_job = exa.websets.imports.update('webset_id', 'import_id', params={ 'name': 'Updated Import Name' }) print(f'Updated import: {import_job.id}') delete: description: Deletes a import. operationId: imports-delete parameters: - name: id required: true in: path description: The id of the Import schema: type: string responses: "200": description: Import deleted successfully content: application/json: schema: $ref: "#/components/schemas/Import" headers: X-Request-Id: schema: type: string description: Unique identifier for the request. example: req_N6SsgoiaOQOPqsYKKiw5 required: true summary: Delete Import tags: *ref_8 security: - api_key: [] x-codeSamples: - lang: javascript label: JavaScript source: |- // npm install exa-js import Exa from 'exa-js'; const exa = new Exa('YOUR_EXA_API_KEY'); await exa.websets.imports.delete('webset_id', 'import_id'); console.log('Import deleted successfully'); - lang: python label: Python source: |- # pip install exa-py from exa_py import Exa exa = Exa('YOUR_EXA_API_KEY') exa.websets.imports.delete('webset_id', 'import_id') print('Import deleted successfully') info: title: Websets description: "" version: "0" contact: {} tags: [] servers: - url: https://api.exa.ai/websets/ description: Production components: securitySchemes: api_key: type: apiKey in: header name: x-api-key description: Your Exa API key schemas: CompanyEntity: type: - object properties: type: type: string const: company default: company required: - type title: Company PersonEntity: type: - object properties: type: type: string const: person default: person required: - type title: Person ArticleEntity: type: - object properties: type: type: string const: article default: article required: - type title: Article ResearchPaperEntity: type: - object properties: type: type: string const: research_paper default: research_paper required: - type title: Research Paper CustomEntity: type: - object properties: type: type: string const: custom default: custom description: type: - string minLength: 2 maxLength: 200 required: - type - description title: Custom Entity: oneOf: - type: - object $ref: "#/components/schemas/CompanyEntity" - type: - object $ref: "#/components/schemas/PersonEntity" - type: - object $ref: "#/components/schemas/ArticleEntity" - type: - object $ref: "#/components/schemas/ResearchPaperEntity" - type: - object $ref: "#/components/schemas/CustomEntity" CreateCriterionParameters: type: - object properties: description: type: - string minLength: 1 maxLength: 1000 description: The description of the criterion required: - description CreateEnrichmentParameters: type: - object properties: description: type: - string minLength: 1 maxLength: 5000 description: >- Provide a description of the enrichment task you want to perform to each Webset Item. format: type: - string enum: - text - date - number - options - email - phone - url description: >- Format of the enrichment response. We automatically select the best format based on the description. If you want to explicitly specify the format, you can do so here. options: type: - array items: type: - object properties: label: type: - string description: The label of the option required: - label minItems: 1 maxItems: 150 description: >- When the format is options, the different options for the enrichment agent to choose from. metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 required: - description CreateWebsetParameters: type: - object properties: search: type: - object properties: query: type: - string minLength: 1 maxLength: 5000 description: >- Natural language search query describing what you are looking for. Be specific and descriptive about your requirements, characteristics, and any constraints that help narrow down the results. Any URLs provided will be crawled and used as additional context for the search. examples: - >- Marketing agencies based in the US, that focus on consumer products. - AI startups in Europe that raised Series A funding in 2024 - SaaS companies with 50-200 employees in the fintech space count: default: 10 type: - number minimum: 1 description: >- Number of Items the Webset will attempt to find. The actual number of Items found may be less than this number depending on the search complexity. entity: $ref: "#/components/schemas/Entity" description: >- Entity the Webset will return results for. It is not required to provide it, we automatically detect the entity from all the information provided in the query. Only use this when you need more fine control. criteria: type: - array items: type: - object $ref: "#/components/schemas/CreateCriterionParameters" title: CreateCriterionParameters minItems: 1 maxItems: 5 description: >- Criteria every item is evaluated against. It's not required to provide your own criteria, we automatically detect the criteria from all the information provided in the query. Only use this when you need more fine control. recall: type: - boolean description: >- Whether to provide an estimate of how many total relevant results could exist for this search. Result of the analysis will be available in the `recall` field within the search request. exclude: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string minLength: 1 description: The ID of the source to exclude. required: - source - id description: >- Sources (existing imports or websets) to exclude from search results. Any results found within these sources will be omitted to prevent finding them during search. scope: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string minLength: 1 description: The ID of the source to search. relationship: type: - object properties: definition: type: - string description: >- What the relationship of the entities you hope to find is relative to the entities contained in the provided source. Only needed for hop searches (graph traversal) from the source entities to related targets. Examples: "investors of", "current employer", "employees at". Omit for simple filtering within the source. limit: type: - number minimum: 1 maximum: 10 description: >- Number of related entities to find per source entity (fanout). Only used for hop searches. Range: 1-10. required: - definition - limit required: - source - id description: >- Limit this search to only consider candidates from the listed sources (existing Imports or Websets). Scope applies per-search; if you run another search and want to stay within the same dataset, pass scope again. When scope is present, the search behavior is OVERRIDE (replaces results rather than appending). Note: Using the same Import in both top-level import and search.scope will return a 400 error. required: - query description: Create initial search for the Webset. import: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string minLength: 1 description: The ID of the source to search. required: - source - id description: >- Attach/load data from existing Imports or Websets into this Webset. For CSV Imports, this schedules ingestion and creates a staging pool of items (ImportItems do not automatically appear as Webset Items; searches create Webset Items). This does not filter searches. To filter a search to only look within an Import or Webset, use search.scope instead. enrichments: type: - array items: type: - object $ref: "#/components/schemas/CreateEnrichmentParameters" title: CreateEnrichmentParameters description: >- Add enrichments to extract additional data from found items. Enrichments automatically search for and extract specific information (like contact details, funding data, employee counts, etc.) from each item added to your Webset. exclude: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string minLength: 1 description: The ID of the source to exclude. required: - source - id description: >- Global exclusion sources (existing imports or websets) that apply to all operations within this Webset. Any results found within these sources will be omitted across all search and import operations. externalId: type: - string maxLength: 300 description: >- The external identifier for the webset. You can use this to reference the Webset by your own internal identifiers. metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 examples: - search: query: >- Marketing agencies based in the US, that focus on consumer products. count: 10 WebsetSearch: type: - object properties: id: type: - string description: The unique identifier for the search object: type: string const: webset_search default: webset_search status: type: - string enum: - created - pending - running - completed - canceled description: The status of the search title: WebsetSearchStatus websetId: type: - string description: The unique identifier for the Webset this search belongs to query: description: The query used to create the search. type: - string minLength: 1 maxLength: 5000 entity: $ref: "#/components/schemas/Entity" description: >- The entity the search will return results for. When no entity is provided during creation, we will automatically select the best entity based on the query. nullable: true criteria: type: - array items: type: - object properties: description: description: The description of the criterion type: - string minLength: 1 maxLength: 1000 successRate: type: - number minimum: 0 maximum: 100 description: >- Value between 0 and 100 representing the percentage of results that meet the criterion. required: - description - successRate description: >- The criteria the search will use to evaluate the results. If not provided, we will automatically generate them for you. count: type: - number minimum: 1 description: >- The number of results the search will attempt to find. The actual number of results may be less than this number depending on the search complexity. behavior: default: override type: - string $ref: "#/components/schemas/WebsetSearchBehavior" description: >- The behavior of the search when it is added to a Webset. - `override`: the search will replace the existing Items found in the Webset and evaluate them against the new criteria. Any Items that don't match the new criteria will be discarded. - `append`: the search will add the new Items found to the existing Webset. Any Items that don't match the new criteria will be discarded. exclude: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string required: - source - id description: >- Sources (existing imports or websets) used to omit certain results to be found during the search. scope: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string relationship: type: - object properties: definition: type: - string description: >- What the relationship of the entities you hope to find is relative to the entities contained in the provided source. limit: type: - number minimum: 1 maximum: 10 required: - definition - limit required: - source - id description: >- The scope of the search. By default, there is no scope - thus searching the web. If provided during creation, the search will only be performed on the sources provided. progress: type: - object properties: found: type: - number description: The number of results found so far analyzed: type: - number description: The number of results analyzed so far completion: type: - number minimum: 0 maximum: 100 description: The completion percentage of the search timeLeft: type: number description: The estimated time remaining in seconds, null if unknown nullable: true required: - found - analyzed - completion - timeLeft description: The progress of the search recall: type: object properties: expected: type: - object properties: total: type: - number description: The estimated total number of potential matches confidence: type: - string enum: - high - medium - low description: The confidence in the estimate bounds: type: - object properties: min: type: - number description: The minimum estimated total number of potential matches max: type: - number description: The maximum estimated total number of potential matches required: - min - max required: - total - confidence - bounds reasoning: type: - string description: The reasoning for the estimate required: - expected - reasoning description: >- Recall metrics for the search, null if not yet computed or requested. nullable: true metadata: default: {} description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 canceledAt: type: string format: date-time description: The date and time the search was canceled nullable: true canceledReason: type: string $ref: "#/components/schemas/WebsetSearchCanceledReason" description: The reason the search was canceled nullable: true createdAt: type: - string format: date-time description: The date and time the search was created updatedAt: type: - string format: date-time description: The date and time the search was updated required: - id - object - websetId - status - query - entity - criteria - count - exclude - scope - progress - recall - canceledAt - canceledReason - createdAt - updatedAt Import: type: - object properties: id: type: - string description: The unique identifier for the Import object: type: - string enum: - import description: The type of object status: type: - string enum: - pending - processing - completed - failed description: The status of the Import format: type: - string enum: - csv - webset description: The format of the import. entity: $ref: "#/components/schemas/Entity" description: The type of entity the import contains. nullable: true title: type: - string description: The title of the import count: type: - number description: The number of entities in the import metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 failedReason: type: string enum: - invalid_format - invalid_file_content - missing_identifier description: The reason the import failed nullable: true failedAt: type: string format: date-time description: When the import failed nullable: true failedMessage: type: string description: A human readable message of the import failure nullable: true createdAt: type: - string format: date-time description: When the import was created updatedAt: type: - string format: date-time description: When the import was last updated required: - id - object - status - format - entity - title - count - metadata - failedReason - failedAt - failedMessage - createdAt - updatedAt WebsetEnrichment: type: - object properties: id: type: - string description: The unique identifier for the enrichment object: type: string const: webset_enrichment default: webset_enrichment status: type: - string enum: - pending - canceled - completed description: The status of the enrichment title: WebsetEnrichmentStatus websetId: type: - string description: The unique identifier for the Webset this enrichment belongs to. title: type: string description: >- The title of the enrichment. This will be automatically generated based on the description and format. nullable: true description: type: - string description: >- The description of the enrichment task provided during the creation of the enrichment. format: type: string $ref: "#/components/schemas/WebsetEnrichmentFormat" description: The format of the enrichment response. nullable: true options: type: array items: type: - object properties: label: type: - string description: The label of the option required: - label description: >- When the format is options, the different options for the enrichment agent to choose from. title: WebsetEnrichmentOptions nullable: true instructions: type: string description: >- The instructions for the enrichment Agent. This will be automatically generated based on the description and format. nullable: true metadata: default: {} description: The metadata of the enrichment type: - object additionalProperties: type: - string maxLength: 1000 createdAt: type: - string format: date-time description: The date and time the enrichment was created updatedAt: type: - string format: date-time description: The date and time the enrichment was updated required: - id - object - status - websetId - title - description - format - options - instructions - createdAt - updatedAt MonitorRun: type: - object properties: id: type: - string description: The unique identifier for the Monitor Run object: type: - string enum: - monitor_run description: The type of object status: type: - string enum: - created - running - completed - canceled - failed description: The status of the Monitor Run monitorId: type: - string description: The monitor that the run is associated with type: type: - string enum: - search - refresh description: The type of the Monitor Run completedAt: type: string format: date-time description: When the run completed nullable: true failedAt: type: string format: date-time description: When the run failed nullable: true failedReason: type: string description: The reason the run failed nullable: true canceledAt: type: string format: date-time description: When the run was canceled nullable: true createdAt: type: - string format: date-time description: When the run was created updatedAt: type: - string format: date-time description: When the run was last updated required: - id - object - monitorId - status - type - completedAt - failedAt - failedReason - canceledAt - createdAt - updatedAt Monitor: type: - object properties: id: type: - string description: The unique identifier for the Monitor object: type: - string enum: - monitor description: The type of object status: type: - string enum: - enabled - disabled description: The status of the Monitor websetId: type: - string description: The id of the Webset the Monitor belongs to cadence: type: - object properties: cron: description: >- Cron expression for monitor cadence (must be a valid Unix cron with 5 fields). The schedule must trigger at most once per day. type: - string timezone: description: IANA timezone (e.g., "America/New_York") default: Etc/UTC type: - string required: - cron description: How often the monitor will run behavior: type: - object properties: type: type: string const: search default: search config: type: - object properties: query: type: - string minLength: 2 maxLength: 10000 description: >- The query to search for. By default, the query from the last search is used. criteria: type: - array items: type: - object properties: description: type: - string minLength: 2 maxLength: 1000 required: - description maxItems: 5 description: >- The criteria to search for. By default, the criteria from the last search is used. entity: $ref: "#/components/schemas/Entity" title: Entity description: >- The entity to search for. By default, the entity from the last search/import is used. count: type: - number exclusiveMinimum: 0 description: The maximum number of results to find behavior: default: append type: - string enum: - override - append description: The behaviour of the Search when it is added to a Webset. required: - count description: >- Specify the search parameters for the Monitor. By default, the search parameters (query, entity and criteria) from the last search are used when no parameters are provided. required: - type - config description: Behavior to perform when monitor runs lastRun: type: object $ref: "#/components/schemas/MonitorRun" title: MonitorRun description: The last run of the monitor nullable: true nextRunAt: type: string format: date-time description: Date and time when the next run will occur in nullable: true metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 createdAt: type: - string format: date-time description: When the monitor was created updatedAt: type: - string format: date-time description: When the monitor was last updated required: - id - object - status - websetId - cadence - behavior - lastRun - nextRunAt - metadata - createdAt - updatedAt Webset: type: - object properties: id: type: - string description: The unique identifier for the webset object: type: string const: webset default: webset status: type: - string enum: - idle - pending - running - paused description: The status of the webset title: WebsetStatus externalId: type: string description: The external identifier for the webset nullable: true title: type: string description: The title of the webset nullable: true searches: type: - array items: type: - object $ref: "#/components/schemas/WebsetSearch" description: The searches that have been performed on the webset. imports: type: - array items: type: - object $ref: "#/components/schemas/Import" description: Imports that have been performed on the webset. enrichments: type: - array items: type: - object $ref: "#/components/schemas/WebsetEnrichment" description: The Enrichments to apply to the Webset Items. monitors: type: - array items: type: - object $ref: "#/components/schemas/Monitor" description: The Monitors for the Webset. excludes: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string required: - source - id description: >- The Excludes sources (existing imports or websets) that apply to all operations within this Webset. Any results found within these sources will be omitted across all search and import operations. metadata: default: {} description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 createdAt: type: - string format: date-time description: The date and time the webset was created updatedAt: type: - string format: date-time description: The date and time the webset was updated required: - id - object - status - externalId - title - searches - imports - enrichments - monitors - createdAt - updatedAt WebsetItemPersonProperties: type: - object properties: type: type: string const: person default: person url: type: - string format: uri description: The URL of the person profile description: type: - string description: Short description of the relevance of the person person: type: - object properties: name: type: - string description: The name of the person location: type: string description: The location of the person nullable: true position: type: string description: The current work position of the person nullable: true company: type: object properties: name: type: - string description: The name of the company location: type: string description: The location the person is working at the company nullable: true required: - name - location title: WebsetItemPersonCompanyPropertiesFields nullable: true pictureUrl: type: string format: uri description: The image URL of the person nullable: true required: - name - location - position - company - pictureUrl title: WebsetItemPersonPropertiesFields required: - type - url - description - person WebsetItemCompanyProperties: type: - object properties: type: type: string const: company default: company url: type: - string format: uri description: The URL of the company website description: type: - string description: Short description of the relevance of the company content: type: string description: The text content of the company website nullable: true company: type: - object properties: name: type: - string description: The name of the company location: type: string description: The main location of the company nullable: true employees: type: number description: The number of employees of the company nullable: true industry: type: string description: The industry of the company nullable: true about: type: string description: A short description of the company nullable: true logoUrl: type: string format: uri description: The logo URL of the company nullable: true required: - name - location - employees - industry - about - logoUrl title: WebsetItemCompanyPropertiesFields required: - type - url - description - content - company WebsetItemArticleProperties: type: - object properties: type: type: string const: article default: article url: type: - string format: uri description: The URL of the article description: type: - string description: Short description of the relevance of the article content: type: string description: The text content for the article nullable: true article: type: - object properties: title: type: string description: The title of the article nullable: true author: type: string description: The author(s) of the article nullable: true publishedAt: type: string description: The date and time the article was published nullable: true required: - title - author - publishedAt title: WebsetItemArticlePropertiesFields required: - type - url - description - content - article WebsetItemResearchPaperProperties: type: - object properties: type: type: string const: research_paper default: research_paper url: type: - string format: uri description: The URL of the research paper description: type: - string description: Short description of the relevance of the research paper content: type: string description: The text content of the research paper nullable: true researchPaper: type: - object properties: title: type: string description: The title of the research paper nullable: true author: type: string description: The author(s) of the research paper nullable: true publishedAt: type: string description: The date and time the research paper was published nullable: true required: - title - author - publishedAt title: WebsetItemResearchPaperPropertiesFields required: - type - url - description - content - researchPaper WebsetItemCustomProperties: type: - object properties: type: type: string const: custom default: custom url: type: - string format: uri description: The URL of the Item description: type: - string description: Short description of the Item content: type: string description: The text content of the Item nullable: true custom: type: - object properties: title: type: string description: The title of the website nullable: true author: type: string description: The author(s) of the website nullable: true publishedAt: type: string description: The date and time the website was published nullable: true required: - title - author - publishedAt title: WebsetItemCustomPropertiesFields required: - type - url - description - content - custom WebsetItemEvaluation: type: - object properties: criterion: type: - string description: The description of the criterion reasoning: type: - string description: The reasoning for the result of the evaluation satisfied: type: - string enum: - "yes" - "no" - unclear description: The satisfaction of the criterion references: default: [] type: - array items: type: - object properties: title: type: string description: The title of the reference nullable: true snippet: type: string description: The relevant snippet of the reference content nullable: true url: type: - string format: uri description: The URL of the reference required: - title - snippet - url description: The references used to generate the result. required: - criterion - reasoning - satisfied EnrichmentResult: type: - object properties: object: type: string const: enrichment_result default: enrichment_result status: type: - string enum: - pending - completed - canceled description: The status of the enrichment result. format: type: - string $ref: "#/components/schemas/WebsetEnrichmentFormat" result: type: array items: type: - string description: The result of the enrichment. nullable: true reasoning: type: string description: The reasoning for the result when an Agent is used. nullable: true references: type: - array items: type: - object properties: title: type: string description: The title of the reference nullable: true snippet: type: string description: The relevant snippet of the reference content nullable: true url: type: - string format: uri description: The URL of the reference required: - title - snippet - url description: The references used to generate the result. enrichmentId: type: - string description: The id of the Enrichment that generated the result required: - object - status - format - result - reasoning - references - enrichmentId WebsetItem: type: - object properties: id: type: - string description: The unique identifier for the Webset Item object: type: string const: webset_item default: webset_item source: type: - string enum: - search - import description: The source of the Item sourceId: type: - string description: The unique identifier for the source websetId: type: - string description: The unique identifier for the Webset this Item belongs to. properties: oneOf: - type: - object $ref: "#/components/schemas/WebsetItemPersonProperties" title: Person - type: - object $ref: "#/components/schemas/WebsetItemCompanyProperties" title: Company - type: - object $ref: "#/components/schemas/WebsetItemArticleProperties" title: Article - type: - object $ref: "#/components/schemas/WebsetItemResearchPaperProperties" title: Research Paper - type: - object $ref: "#/components/schemas/WebsetItemCustomProperties" title: Custom description: The properties of the Item evaluations: type: - array items: type: - object $ref: "#/components/schemas/WebsetItemEvaluation" description: The criteria evaluations of the item enrichments: type: array items: type: - object $ref: "#/components/schemas/EnrichmentResult" description: The enrichments results of the Webset item nullable: true createdAt: type: - string format: date-time description: The date and time the item was created updatedAt: type: - string format: date-time description: The date and time the item was last updated required: - id - object - source - sourceId - websetId - properties - evaluations - enrichments - createdAt - updatedAt GetWebsetResponse: allOf: - type: - object $ref: "#/components/schemas/Webset" - type: - object properties: items: type: - array items: type: - object $ref: "#/components/schemas/WebsetItem" description: >- When expand query parameter contains `items`, this will contain the items in the webset UpdateWebsetRequest: type: - object properties: metadata: description: Set of key-value pairs you want to associate with this object. type: object additionalProperties: type: - string maxLength: 1000 nullable: true ListWebsetsResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/Webset" description: The list of websets hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor PreviewWebsetParameters: type: - object properties: search: type: - object properties: query: type: - string minLength: 1 maxLength: 5000 description: >- Natural language search query describing what you are looking for. Be specific and descriptive about your requirements, characteristics, and any constraints that help narrow down the results. examples: - >- Marketing agencies based in the US, that focus on consumer products. Get brands worked with and city - AI startups in Europe that raised Series A funding in 2024 - SaaS companies with 50-200 employees in the fintech space entity: $ref: "#/components/schemas/Entity" description: >- Entity used to inform the decomposition. It is not required to provide it, we automatically detect the entity from all the information provided in the query. Only use this when you need more fine control. count: default: 10 type: - number minimum: 1 maximum: 10 description: >- When query parameter search=true, the number of preview items to return. required: - query required: - search WebsetItemPreview: type: - object properties: id: type: - string description: The unique identifier for the preview item properties: oneOf: - type: - object $ref: "#/components/schemas/WebsetItemPersonProperties" title: Person - type: - object $ref: "#/components/schemas/WebsetItemCompanyProperties" title: Company - type: - object $ref: "#/components/schemas/WebsetItemArticleProperties" title: Article - type: - object $ref: "#/components/schemas/WebsetItemResearchPaperProperties" title: Research Paper - type: - object $ref: "#/components/schemas/WebsetItemCustomProperties" title: Custom description: The properties of the preview item createdAt: type: - string format: date-time description: The date and time the preview was created required: - id - properties - createdAt PreviewWebsetResponse: type: - object properties: search: type: - object properties: entity: oneOf: - type: - object $ref: "#/components/schemas/CompanyEntity" - type: - object $ref: "#/components/schemas/PersonEntity" - type: - object $ref: "#/components/schemas/ArticleEntity" - type: - object $ref: "#/components/schemas/ResearchPaperEntity" - type: - object $ref: "#/components/schemas/CustomEntity" description: Detected entity from the query. criteria: type: - array items: type: - object properties: description: type: - string required: - description description: Detected criteria from the query. required: - entity - criteria enrichments: type: - array items: type: - object properties: description: type: - string description: Description of the enrichment. format: type: - string enum: - text - date - number - options - email - phone - url description: Format of the enrichment. options: type: - array items: type: - object properties: label: type: - string description: Label of the option. required: - label description: When format is options, the options detected from the query. required: - description - format description: Detected enrichments from the query. items: type: - array items: type: - object $ref: "#/components/schemas/WebsetItemPreview" description: Preview items matching the search criteria. required: - search - enrichments - items ListWebsetItemResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/WebsetItem" description: The list of webset items hasMore: type: - boolean description: Whether there are more Items to paginate through nextCursor: type: string description: The cursor to paginate through the next set of Items nullable: true required: - data - hasMore - nextCursor UpdateEnrichmentParameters: type: - object properties: description: type: - string minLength: 1 maxLength: 5000 description: >- Provide a description of the enrichment task you want to perform to each Webset Item. format: type: - string enum: - text - date - number - options - email - phone - url description: >- Format of the enrichment response. We automatically select the best format based on the description. If you want to explicitly specify the format, you can do so here. options: type: - array items: type: - object properties: label: type: - string description: The label of the option required: - label minItems: 1 maxItems: 150 description: >- When the format is options, the different options for the enrichment agent to choose from. metadata: description: Set of key-value pairs you want to associate with this object. type: object additionalProperties: type: - string maxLength: 1000 nullable: true CreateWebhookParameters: type: - object properties: events: type: - array items: type: - string $ref: "#/components/schemas/EventType" minItems: 1 maxItems: 19 description: The events to trigger the webhook url: type: - string format: uri description: The URL to send the webhook to metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 required: - events - url Webhook: type: - object properties: id: type: - string description: The unique identifier for the webhook object: type: string const: webhook default: webhook status: type: - string enum: - active - inactive description: The status of the webhook title: WebhookStatus events: type: - array items: type: - string $ref: "#/components/schemas/EventType" minItems: 1 description: The events to trigger the webhook url: type: - string format: uri description: The URL to send the webhook to secret: type: string description: >- The secret to verify the webhook signature. Only returned on Webhook creation. nullable: true metadata: default: {} description: The metadata of the webhook type: - object additionalProperties: type: - string maxLength: 1000 createdAt: type: - string format: date-time description: The date and time the webhook was created updatedAt: type: - string format: date-time description: The date and time the webhook was last updated required: - id - object - status - events - url - secret - createdAt - updatedAt UpdateWebhookParameters: type: - object properties: events: type: - array items: type: - string $ref: "#/components/schemas/EventType" minItems: 1 maxItems: 19 description: The events to trigger the webhook url: type: - string format: uri description: The URL to send the webhook to metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 ListWebhooksResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/Webhook" description: The list of webhooks hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor WebhookAttempt: type: - object properties: id: type: - string description: The unique identifier for the webhook attempt object: type: string const: webhook_attempt default: webhook_attempt eventId: type: - string description: The unique identifier for the event eventType: type: - string enum: - webset.created - webset.deleted - webset.paused - webset.idle - webset.search.created - webset.search.canceled - webset.search.completed - webset.search.updated - import.created - import.completed - webset.item.created - webset.item.enriched - monitor.created - monitor.updated - monitor.deleted - monitor.run.created - monitor.run.completed - webset.export.created - webset.export.completed description: The type of event webhookId: type: - string description: The unique identifier for the webhook url: type: - string description: The URL that was used during the attempt successful: description: Whether the attempt was successful type: - boolean responseHeaders: type: - object additionalProperties: type: - string description: The headers of the response responseBody: type: string description: The body of the response nullable: true responseStatusCode: type: - number description: The status code of the response attempt: type: - number description: The attempt number of the webhook attemptedAt: type: - string format: date-time description: The date and time the webhook attempt was made required: - id - object - eventId - eventType - webhookId - url - successful - responseHeaders - responseBody - responseStatusCode - attempt - attemptedAt ListWebhookAttemptsResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/WebhookAttempt" description: The list of webhook attempts hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor Event: discriminator: propertyName: type oneOf: - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.created default: webset.created data: type: - object $ref: "#/components/schemas/Webset" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.deleted default: webset.deleted data: type: - object $ref: "#/components/schemas/Webset" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetDeletedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.idle default: webset.idle data: type: - object $ref: "#/components/schemas/Webset" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetIdleEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.paused default: webset.paused data: type: - object $ref: "#/components/schemas/Webset" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetPausedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.item.created default: webset.item.created data: type: - object $ref: "#/components/schemas/WebsetItem" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetItemCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.item.enriched default: webset.item.enriched data: type: - object $ref: "#/components/schemas/WebsetItem" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetItemEnrichedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.search.created default: webset.search.created data: type: - object $ref: "#/components/schemas/WebsetSearch" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetSearchCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.search.updated default: webset.search.updated data: type: - object $ref: "#/components/schemas/WebsetSearch" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetSearchUpdatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.search.canceled default: webset.search.canceled data: type: - object $ref: "#/components/schemas/WebsetSearch" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetSearchCanceledEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: webset.search.completed default: webset.search.completed data: type: - object $ref: "#/components/schemas/WebsetSearch" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: WebsetSearchCompletedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: import.created default: import.created data: type: - object $ref: "#/components/schemas/Import" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: ImportCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: import.completed default: import.completed data: type: - object $ref: "#/components/schemas/Import" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: ImportCompletedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: monitor.created default: monitor.created data: type: - object $ref: "#/components/schemas/Monitor" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: MonitorCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: monitor.updated default: monitor.updated data: type: - object $ref: "#/components/schemas/Monitor" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: MonitorUpdatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: monitor.deleted default: monitor.deleted data: type: - object $ref: "#/components/schemas/Monitor" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: MonitorDeletedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: monitor.run.created default: monitor.run.created data: type: - object $ref: "#/components/schemas/MonitorRun" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: MonitorRunCreatedEvent - type: - object properties: id: description: The unique identifier for the event type: - string object: type: string const: event default: event type: type: string const: monitor.run.completed default: monitor.run.completed data: type: - object $ref: "#/components/schemas/MonitorRun" createdAt: type: - string format: date-time description: The date and time the event was created required: - id - object - type - data - createdAt title: MonitorRunCompletedEvent title: Event ListEventsResponse: type: - object properties: data: type: - array items: discriminator: propertyName: type $ref: "#/components/schemas/Event" description: The list of events hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor CreateWebsetSearchParameters: type: - object properties: count: type: - number minimum: 1 description: >- Number of Items the Search will attempt to find. The actual number of Items found may be less than this number depending on the query complexity. query: type: - string minLength: 1 maxLength: 5000 description: >- Natural language search query describing what you are looking for. Be specific and descriptive about your requirements, characteristics, and any constraints that help narrow down the results. Any URLs provided will be crawled and used as additional context for the search. examples: - >- Marketing agencies based in the US, that focus on consumer products. Get brands worked with and city - AI startups in Europe that raised Series A funding in 2024 - SaaS companies with 50-200 employees in the fintech space entity: $ref: "#/components/schemas/Entity" description: >- Entity the search will return results for. It is not required to provide it, we automatically detect the entity from all the information provided in the query. Only use this when you need more fine control. criteria: type: - array items: type: - object $ref: "#/components/schemas/CreateCriterionParameters" title: CreateCriterionParameters minItems: 1 maxItems: 5 description: >- Criteria every item is evaluated against. It's not required to provide your own criteria, we automatically detect the criteria from all the information provided in the query. Only use this when you need more fine control. exclude: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: description: The ID of the source to exclude. type: - string minLength: 1 required: - source - id description: >- Sources (existing imports or websets) to exclude from search results. Any results found within these sources will be omitted to prevent finding them during search. scope: type: - array items: type: - object properties: source: type: - string enum: - import - webset id: type: - string minLength: 1 description: The ID of the source to search. relationship: type: - object properties: definition: type: - string description: >- What the relationship of the entities you hope to find is relative to the entities contained in the provided source. limit: type: - number minimum: 1 maximum: 10 required: - definition - limit required: - source - id description: >- Limit the search to specific sources (existing imports). Any results found within these sources matching the search criteria will be included in the Webset. recall: type: - boolean description: >- Whether to provide an estimate of how many total relevant results could exist for this search. Result of the analysis will be available in the `recall` field within the search request. behavior: default: override type: - string description: >- How this search interacts with existing items in the Webset: - **override**: Replace existing items and evaluate all items against new criteria - **append**: Add new items to existing ones, keeping items that match the new criteria $ref: "#/components/schemas/WebsetSearchBehavior" metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 required: - count - query CreateMonitorParameters: type: - object properties: websetId: type: - string description: The id of the Webset cadence: type: - object properties: cron: description: >- Cron expression for monitor cadence (must be a valid Unix cron with 5 fields). The schedule must trigger at most once per day. type: - string timezone: description: IANA timezone (e.g., "America/New_York") default: Etc/UTC type: - string required: - cron description: How often the monitor will run behavior: type: - object properties: type: type: string const: search default: search config: type: - object properties: query: type: - string minLength: 2 maxLength: 10000 description: >- The query to search for. By default, the query from the last search is used. criteria: type: - array items: type: - object properties: description: type: - string minLength: 2 maxLength: 1000 required: - description maxItems: 5 description: >- The criteria to search for. By default, the criteria from the last search is used. entity: $ref: "#/components/schemas/Entity" title: Entity description: >- The entity to search for. By default, the entity from the last search/import is used. count: type: - number exclusiveMinimum: 0 description: The maximum number of results to find behavior: default: append type: - string enum: - override - append description: The behaviour of the Search when it is added to a Webset. required: - count description: >- Specify the search parameters for the Monitor. By default, the search parameters (query, entity and criteria) from the last search are used when no parameters are provided. required: - type - config description: Behavior to perform when monitor runs metadata: type: - object additionalProperties: type: - string required: - websetId - cadence - behavior ListMonitorsResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/Monitor" description: The list of monitors hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor MonitorCadence: type: - object properties: cron: description: >- Cron expression for monitor cadence (must be a valid Unix cron with 5 fields). The schedule must trigger at most once per day. type: - string timezone: description: IANA timezone (e.g., "America/New_York") default: Etc/UTC type: - string required: - cron MonitorBehavior: type: - object properties: type: type: string const: search default: search config: type: - object properties: query: type: - string minLength: 2 maxLength: 10000 description: >- The query to search for. By default, the query from the last search is used. criteria: type: - array items: type: - object properties: description: type: - string minLength: 2 maxLength: 1000 required: - description maxItems: 5 description: >- The criteria to search for. By default, the criteria from the last search is used. entity: $ref: "#/components/schemas/Entity" title: Entity description: >- The entity to search for. By default, the entity from the last search/import is used. count: type: - number exclusiveMinimum: 0 description: The maximum number of results to find behavior: default: append type: - string enum: - override - append description: The behaviour of the Search when it is added to a Webset. required: - count description: >- Specify the search parameters for the Monitor. By default, the search parameters (query, entity and criteria) from the last search are used when no parameters are provided. required: - type - config UpdateMonitor: type: - object properties: status: type: - string enum: - enabled - disabled description: The status of the monitor. metadata: type: - object additionalProperties: type: - string cadence: type: - object $ref: "#/components/schemas/MonitorCadence" behavior: type: - object $ref: "#/components/schemas/MonitorBehavior" ListMonitorRunsResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/MonitorRun" description: The list of monitor runs hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor CreateImportParameters: discriminator: propertyName: format oneOf: - type: - object properties: size: type: - number maximum: 50000000 description: The size of the file in bytes. Maximum size is 50 MB. count: type: - number description: The number of records to import title: type: - string description: The title of the import format: type: - string enum: - csv description: >- When the import is in CSV format, we expect a column containing the key identifier for the entity - for now URL. If not provided, import will fail to be processed. metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 entity: oneOf: - type: - object $ref: "#/components/schemas/CompanyEntity" - type: - object $ref: "#/components/schemas/PersonEntity" - type: - object $ref: "#/components/schemas/ArticleEntity" - type: - object $ref: "#/components/schemas/ResearchPaperEntity" - type: - object $ref: "#/components/schemas/CustomEntity" description: >- What type of entity the import contains (e.g. People, Companies, etc.), and thus should be attempted to be resolved as. csv: type: - object properties: identifier: type: - integer minimum: 0 description: >- Column containing the key identifier for the entity (e.g. URL, Name, etc.). If not provided, we will try to infer it from the file. description: When format is `csv`, these are the specific import parameters. required: - size - count - format - entity CreateImportResponse: type: - object properties: id: type: - string description: The unique identifier for the Import object: type: - string enum: - import description: The type of object status: type: - string enum: - pending - processing - completed - failed description: The status of the Import format: type: - string enum: - csv - webset description: The format of the import. entity: $ref: "#/components/schemas/Entity" description: The type of entity the import contains. nullable: true title: type: - string description: The title of the import count: type: - number description: The number of entities in the import metadata: description: Set of key-value pairs you want to associate with this object. type: - object additionalProperties: type: - string maxLength: 1000 failedReason: type: string enum: - invalid_format - invalid_file_content - missing_identifier description: The reason the import failed nullable: true failedAt: type: string format: date-time description: When the import failed nullable: true failedMessage: type: string description: A human readable message of the import failure nullable: true createdAt: type: - string format: date-time description: When the import was created updatedAt: type: - string format: date-time description: When the import was last updated uploadUrl: type: - string description: The URL to upload the file to uploadValidUntil: type: - string description: >- The date and time until the upload URL is valid. The upload URL will be valid for 1 hour. required: - id - object - status - format - entity - title - count - metadata - failedReason - failedAt - failedMessage - createdAt - updatedAt - uploadUrl - uploadValidUntil description: >- The response to a successful import. Includes the upload URL and the upload valid until date. ListImportsResponse: type: - object properties: data: type: - array items: type: - object $ref: "#/components/schemas/Import" description: The list of imports hasMore: type: - boolean description: Whether there are more results to paginate through nextCursor: type: string description: The cursor to paginate through the next set of results nullable: true required: - data - hasMore - nextCursor UpdateImport: type: - object properties: metadata: type: - object additionalProperties: type: - string title: type: - string WebsetEnrichmentFormat: type: string enum: - text - date - number - options - email - phone - url EventType: type: string enum: - webset.created - webset.deleted - webset.paused - webset.idle - webset.search.created - webset.search.canceled - webset.search.completed - webset.search.updated - import.created - import.completed - webset.item.created - webset.item.enriched - monitor.created - monitor.updated - monitor.deleted - monitor.run.created - monitor.run.completed - webset.export.created - webset.export.completed WebsetSearchBehavior: type: string enum: - override - append WebsetSearchCanceledReason: type: string enum: - webset_deleted - webset_canceled