Exa

Exa Websets API

Curated, enrichable collections of web results scoped to a query, vertical (companies, people, news, research), or imported list. Compose searches, attach LLM-driven enrichments, evaluate items, subscribe to webhooks for asynchronous events, and import seed lists. Endpoints under /v0/websets, /v0/webhooks, /v0/events, and /v0/imports.

Exa Websets API is one of 7 APIs that Exa publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include AI, Search, Websets, Enrichment, and Webhooks. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

exa-websets-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Exa Websets API
  version: 2.0.0
  description: Exa Websets API - subset of the Exa Public API.
servers:
- url: https://api.exa.ai
security:
- apiKey: []
- bearer: []
paths:
  /v0/websets:
    servers:
    - url: https://api.exa.ai/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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst webset\
          \ = await exa.websets.create({\n  search: {\n    query: \"Tech companies in San Francisco\",\n    count: 10\n  }\n\
          });\n\nconsole.log(`Created webset: ${webset.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nwebset = exa.websets.create(params={\n\
          \    'search': {\n        'query': 'Tech companies in San Francisco',\n        'count': 10\n    }\n})\n\nprint(f'Created\
          \ webset: {webset.id}')"
      - lang: javascript
        label: Filter within CSV Import
        source: "// Filter a CSV import by criteria (no top-level import needed)\nimport Exa from 'exa-js';\nconst exa = new\
          \ Exa('YOUR_EXA_API_KEY');\n\nconst webset = await exa.websets.create({\n  search: {\n    query: \"people who changed\
          \ jobs\",\n    criteria: [\"changed jobs in the last 6 months\"],\n    count: 10,\n    scope: [{\n      source:\
          \ \"import\",\n      id: \"import_abc123\"  // Your existing import ID\n    }]\n  }\n});\n\nconsole.log(`Filtered\
          \ webset: ${webset.id}`);"
      - lang: python
        label: Filter within CSV Import
        source: "from exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nwebset = exa.websets.create(params={\n \
          \   'search': {\n        'query': 'people who changed jobs',\n        'criteria': ['changed jobs in the last 6 months'],\n\
          \        'count': 10,\n        'scope': [{\n            'source': 'import',\n            'id': 'import_abc123' \
          \ # Your existing import ID\n        }]\n    }\n})\n\nprint(f'Filtered webset: {webset.id}')"
      - lang: javascript
        label: Hop Search (Graph Traversal)
        source: "// Find related entities (e.g., companies -> investors)\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\
          \nconst webset = await exa.websets.create({\n  search: {\n    query: \"investors\",\n    scope: [{\n      source:\
          \ \"webset\",\n      id: \"webset_companies\",\n      relationship: {\n        definition: \"investors of\",\n \
          \       limit: 3  // Find up to 3 investors per company\n      }\n    }]\n  }\n});\n\nconsole.log(`Hop search webset:\
          \ ${webset.id}`);"
      - lang: python
        label: Hop Search (Graph Traversal)
        source: "from exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nwebset = exa.websets.create(params={\n \
          \   'search': {\n        'query': 'investors',\n        'scope': [{\n            'source': 'webset',\n         \
          \   'id': 'webset_companies',\n            'relationship': {\n                'definition': 'investors of',\n  \
          \              'limit': 3  # Find up to 3 investors per company\n            }\n        }]\n    }\n})\n\nprint(f'Hop\
          \ search webset: {webset.id}')"
    get:
      description: 'Returns a list of Websets.


        You can paginate through the results using the `cursor` parameter.


        You can filter results using the `search` parameter to find Websets by ID, external ID, or title.'
      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
      - name: search
        required: false
        in: query
        description: Search term to filter Websets by ID, external ID, or title
        schema:
          minLength: 2
          maxLength: 50
          type: string
      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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\n// List\
          \ websets with optional pagination\nconst websets = await exa.websets.list({\n  limit: 20, // Optional: max results\
          \ per page\n});\n\nconsole.log(`Found ${websets.data.length} websets`);\nwebsets.data.forEach((webset) => {\n  console.log(`-\
          \ ${webset.id}: ${webset.status}`);\n});"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\n# List websets with optional\
          \ pagination\nwebsets_response = exa.websets.list(\n    limit=20  # Optional: max results per page\n)\n\nprint(f\"\
          Found {len(websets_response.data)} websets\")\nfor webset in websets_response.data:\n    print(f\"- {webset.id}:\
          \ {webset.status}\")"
  /v0/websets/{id}:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst webset\
          \ = await exa.websets.update(\"webset_id\", {\n  name: \"Updated Webset Name\",\n  description: \"Updated description\"\
          ,\n});\n\nconsole.log(`Updated webset: ${webset.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nwebset = exa.websets.update(\n\
          \    \"webset_id\",\n    params={\"name\": \"Updated Webset Name\", \"description\": \"Updated description\"},\n\
          )\n\nprint(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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      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:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Websets
      security:
      - apiKey: []
      - bearer: []
      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:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst preview\
          \ = await exa.websets.preview({\n  search: {\n    query:\n      \"Marketing agencies based in the US, that focus\
          \ on consumer products. Get brands worked with and city\",\n  },\n});\n\nconsole.log(\"Search criteria:\", preview.search.criteria);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\npreview = exa.websets.preview(\n\
          \    params={\n        \"query\": \"Marketing agencies based in the US, that focus on consumer products. Get brands\
          \ worked with and city\"\n    }\n)\n\nprint(\"Search criteria:\", preview.search.criteria)\nprint(\"Available enrichments:\"\
          , len(preview.enrichments))"
  /v0/websets/{webset}/items/{id}:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Items
      security:
      - apiKey: []
      - bearer: []
      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:
      - Items
      security:
      - apiKey: []
      - bearer: []
      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:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Items
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst items\
          \ = await exa.websets.items.list(\"webset_id\", {\n  limit: 20,\n});\n\nconsole.log(`Found ${items.data.length}\
          \ items`);\nitems.data.forEach((item) => {\n  console.log(`- ${item.id}: ${item.properties.name}`);\n});"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nitems = exa.websets.items.list(\"\
          webset_id\", limit=20)\n\nprint(f\"Found {len(items.data)} items\")\nfor item in items.data:\n    print(f\"- {item.id}:\
          \ {item.properties.name}\")"
  /v0/websets/{webset}/enrichments:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Enrichments
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst enrichment\
          \ = await exa.websets.enrichments.create(\"webset_id\", {\n  description: \"Company revenue information\",\n  format:\
          \ \"text\",\n});\n\nconsole.log(`Created enrichment: ${enrichment.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nenrichment = exa.websets.enrichments.create(\n\
          \    \"webset_id\", params={\"description\": \"Company revenue information\", \"format\": \"text\"}\n)\n\nprint(f\"\
          Created enrichment: {enrichment.id}\")"
  /v0/websets/{webset}/enrichments/{id}:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Enrichments
      security:
      - apiKey: []
      - bearer: []
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "// npm install exa-js\nimport Exa from \"exa-js\";\nconst exa = new Exa(\"YOUR_EXA_API_KEY\");\n\nconst enrichment\
          \ = await exa.websets.enrichments.update(\"webset_id\", \"enrichment_id\", {\n  description: \"Updated company revenue\
          \ and growth metrics\",\n  format: \"number\",\n});\n\nconsole.log(`Updated enrichment: ${enrichment.id}`);"
      - lang: python
        label: Python
        source: "# pip install exa-py\nfrom exa_py import Exa\n\nexa = Exa(\"YOUR_EXA_API_KEY\")\n\nenrichment = exa.websets.enrichments.update(\n\
          \    \"webset_id\",\n    \"enrichment_id\",\n    params={\n        \"description\": \"Updated company revenue and\
          \ growth metrics\",\n        \"format\": \"number\",\n    },\n)\n\nprint(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:
      - Enrichments
      security:
      - apiKey: []
      - bearer: []
      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:
      - Enrichments
      security:
      - apiKey: []
      - bearer: []
      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:
    servers:
    - url: https://api.exa.ai/websets
    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:
      - Enrichments
      security:
      - apiKey: []
      - bearer: []
      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:
    servers:
    - url: https://api.exa.ai/websets
    post:
      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:
      - Webhooks
      security:
      - apiKey: []
      

# --- truncated at 32 KB (151 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/exa-ai/refs/heads/main/openapi/exa-websets-api-openapi.yml