Exa

Exa Search API

Exa's prompt-engineered Search API performs semantic and keyword web search optimized for LLM and agent consumption. Returns a list of relevant results with URLs, titles, authors, published dates, relevance scores, and optional token-efficient highlights, summaries, or full text via the bundled Contents API. The Answer endpoint returns an LLM-generated answer grounded in web citations. Verticals include Code, Companies, News, People, Research, and Financials. Latency tiers run from fast (180ms) to auto (~1s) to deep (~10s).

Exa Search 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, Web Search, Neural Search, and LLM. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a JSON-LD context, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

exa-search-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Exa Search API
  version: 2.0.0
  description: Exa Search API - subset of the Exa Public API.
servers:
- url: https://api.exa.ai
security:
- apiKey: []
- bearer: []
paths:
  /search:
    post:
      operationId: search
      summary: Search
      description: Perform a search with an Exa prompt-engineered query and retrieve a list of relevant results. Optionally
        get contents.
      x-codeSamples:
      - lang: bash
        label: Simple search with contents
        source: "curl -X POST 'https://api.exa.ai/search' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY' \\\n  -H 'Content-Type: application/json'\
          \ \\\n  -d '{\n    \"query\": \"Latest research in LLMs\",\n    \"contents\": {\n      \"highlights\": true\n  \
          \  }\n  }'"
      - lang: python
        label: Simple search with contents
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.search(\n\
          \    \"Latest research in LLMs\",\n    contents={\"highlights\": True}\n)\n\nprint(results)"
      - lang: javascript
        label: Simple search with contents
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.search(\n    'Latest research in LLMs',\n    { contents: { highlights: true } }\n);\n\nconsole.log(results);"
      - lang: bash
        label: Advanced search with filters
        source: "curl --request POST \\\n  --url https://api.exa.ai/search \\\n  --header 'x-api-key: <token>' \\\n  --header\
          \ 'Content-Type: application/json' \\\n  --data '{\n    \"query\": \"Latest research in LLMs\",\n    \"type\": \"\
          auto\",\n    \"category\": \"research paper\",\n    \"numResults\": 10,\n    \"moderation\": true,\n    \"contents\"\
          : {\n      \"text\": true,\n      \"summary\": {\n        \"query\": \"Main developments\"\n      },\n      \"subpages\"\
          : 1,\n      \"subpageTarget\": \"sources\",\n      \"extras\": {\n        \"links\": 1,\n        \"imageLinks\"\
          : 1\n      }\n    }\n  }'"
      - lang: bash
        label: Deep search with query variations
        source: "curl --request POST \\\n  --url https://api.exa.ai/search \\\n  --header 'x-api-key: <token>' \\\n  --header\
          \ 'Content-Type: application/json' \\\n  --data '{\n    \"query\": \"Who is the CEO of OpenAI?\",\n    \"additionalQueries\"\
          : [\n      \"OpenAI CEO current\",\n      \"OpenAI leadership official source\"\n    ],\n    \"type\": \"deep\"\
          ,\n    \"systemPrompt\": \"Prefer official sources and avoid duplicate results\",\n    \"outputSchema\": {\n   \
          \   \"type\": \"object\",\n      \"properties\": {\n        \"leader\": { \"type\": \"string\" },\n        \"title\"\
          : { \"type\": \"string\" },\n        \"sourceCount\": { \"type\": \"number\" }\n      },\n      \"required\": [\"\
          leader\", \"title\"]\n    },\n    \"contents\": {\n      \"text\": true\n    }\n  }'"
      - lang: python
        label: Advanced search with filters
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.search(\n\
          \    \"Latest research in LLMs\",\n    type=\"auto\",\n    category=\"research paper\",\n    num_results=10,\n \
          \   moderation=True,\n    contents={\n        \"text\": True,\n        \"summary\": {\n            \"query\": \"\
          Main developments\"\n        },\n        \"subpages\": 1,\n        \"subpage_target\": \"sources\",\n        \"\
          extras\": {\n            \"links\": 1,\n            \"image_links\": 1\n        }\n    },\n)\n\nprint(results)"
      - lang: javascript
        label: Advanced search with filters
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.search('Latest research in LLMs', {\n    type: 'auto',\n    category: 'research paper',\n    numResults:\
          \ 10,\n    moderation: true,\n    contents: {\n        text: true,\n        summary: {\n            query: 'Main\
          \ developments'\n        },\n        subpages: 1,\n        subpageTarget: 'sources',\n        extras: {\n      \
          \      links: 1,\n            imageLinks: 1\n        }\n    }\n});\n\nconsole.log(results);"
      - lang: python
        label: Deep search with query variations
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.search(\n\
          \    \"Who is the CEO of OpenAI?\",\n    additional_queries=[\n        \"OpenAI CEO current\",\n        \"OpenAI\
          \ leadership official source\"\n    ],\n    type=\"deep\",\n    system_prompt=\"Prefer official sources and avoid\
          \ duplicate results\",\n    output_schema={\n        \"type\": \"object\",\n        \"properties\": {\n        \
          \    \"leader\": {\"type\": \"string\"},\n            \"title\": {\"type\": \"string\"},\n            \"source_count\"\
          : {\"type\": \"number\"}\n        },\n        \"required\": [\"leader\", \"title\"]\n    },\n    contents={\"text\"\
          : True}\n)\n\nprint(results)"
      - lang: javascript
        label: Deep search with query variations
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.search('Who is the CEO of OpenAI?', {\n    additionalQueries: [\n        'OpenAI CEO current',\n \
          \       'OpenAI leadership official source'\n    ],\n    type: 'deep',\n    systemPrompt: 'Prefer official sources\
          \ and avoid duplicate results',\n    outputSchema: {\n        type: 'object',\n        properties: {\n         \
          \   leader: { type: 'string' },\n            title: { type: 'string' },\n            sourceCount: { type: 'number'\
          \ }\n        },\n        required: ['leader', 'title']\n    },\n    contents: {\n        text: true\n    }\n});\n\
          \nconsole.log(results);"
      - lang: bash
        label: Streaming synthesized output
        source: "curl --no-buffer --request POST \\\n  --url https://api.exa.ai/search \\\n  --header 'x-api-key: <token>'\
          \ \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"query\": \"Summarize the latest AI chip\
          \ launches\",\n    \"type\": \"fast\",\n    \"stream\": true,\n    \"outputSchema\": {\n      \"type\": \"text\"\
          ,\n      \"description\": \"A short grounded summary in 3 bullets\"\n    }\n  }'"
      - lang: bash
        label: Instant search (lowest latency)
        source: "curl --request POST \\\n  --url https://api.exa.ai/search \\\n  --header 'x-api-key: <token>' \\\n  --header\
          \ 'Content-Type: application/json' \\\n  --data '{\n    \"query\": \"What is the capital of France?\",\n    \"type\"\
          : \"instant\",\n    \"numResults\": 10,\n    \"contents\": {\n      \"highlights\": true\n    }\n  }'"
      - lang: python
        label: Instant search (lowest latency)
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.search(\n\
          \    \"What is the capital of France?\",\n    type=\"instant\",\n    num_results=10,\n    contents={\"highlights\"\
          : True}\n)\n\nprint(results)"
      - lang: javascript
        label: Instant search (lowest latency)
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.search(\n    'What is the capital of France?',\n    {\n        type: 'instant',\n        numResults:\
          \ 10,\n        contents: { highlights: true }\n    }\n);\n\nconsole.log(results);"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                requestId: b5947044c4b78efa9552a7c89b306d95
                results:
                - title: A Comprehensive Overview of Large Language Models
                  url: https://arxiv.org/pdf/2307.06435.pdf
                  publishedDate: '2023-11-16T01:36:32.547Z'
                  author: Humza  Naveed, University of Engineering and Technology (UET), Lahore, Pakistan
                  id: https://arxiv.org/abs/2307.06435
                  image: https://arxiv.org/pdf/2307.06435.pdf/page_1.png
                  favicon: https://arxiv.org/favicon.ico
                  text: Abstract Large Language Models (LLMs) have recently demonstrated remarkable capabilities...
                  highlights:
                  - Such requirements have limited their adoption...
                  highlightScores:
                  - 0.4600165784358978
                  summary: This overview paper on Large Language Models (LLMs) highlights key developments...
                  subpages:
                  - id: https://arxiv.org/abs/2303.17580
                    url: https://arxiv.org/pdf/2303.17580.pdf
                    title: 'HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face'
                    author: Yongliang  Shen, Microsoft Research Asia, Kaitao  Song, Microsoft Research Asia, Xu  Tan, Microsoft
                      Research Asia, Dongsheng  Li, Microsoft Research Asia, Weiming  Lu, Microsoft Research Asia, Yueting  Zhuang,
                      Microsoft Research Asia, [email protected], Zhejiang  University, Microsoft Research Asia, Microsoft  Research,
                      Microsoft Research Asia
                    publishedDate: '2023-11-16T01:36:20.486Z'
                    text: 'HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face Date Published: 2023-05-25
                      Authors: Yongliang Shen, Microsoft Research Asia Kaitao Song, Microsoft Research Asia Xu Tan, Microsoft
                      Research Asia Dongsheng Li, Microsoft Research Asia Weiming Lu, Microsoft Research Asia Yueting Zhuang,
                      Microsoft Research Asia, [email protected] Zhejiang University, Microsoft Research Asia Microsoft Research,
                      Microsoft Research Asia Abstract Solving complicated AI tasks with different domains and modalities
                      is a key step toward artificial general intelligence. While there are abundant AI models available for
                      different domains and modalities, they cannot handle complicated AI tasks. Considering large language
                      models (LLMs) have exhibited exceptional ability in language understanding, generation, interaction,
                      and reasoning, we advocate that LLMs could act as a controller to manage existing AI models to solve
                      complicated AI tasks and language could be a generic interface to empower t'
                    summary: HuggingGPT is a framework using ChatGPT as a central controller to orchestrate various AI models
                      from Hugging Face to solve complex tasks. ChatGPT plans the task, selects appropriate models based on
                      their descriptions, executes subtasks, and summarizes the results. This approach addresses limitations
                      of LLMs by allowing them to handle multimodal data (vision, speech) and coordinate multiple models for
                      complex tasks, paving the way for more advanced AI systems.
                    highlights:
                    - 2) Recently, some researchers started to investigate the integration of using tools or models in LLMs  .
                    highlightScores:
                    - 0.32679107785224915
                  extras:
                    links: []
                resolvedSearchType: ''
                context: <string>
                output:
                  content: <string>
                  grounding:
                  - field: <string>
                    citations:
                    - url: <string>
                      title: <string>
                    confidence: high
                costDollars:
                  total: 0.007
                  search:
                    neural: 0.007
              schema:
                $ref: '#/components/schemas/SearchResponse'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/SearchStreamChunk'
  /contents:
    post:
      operationId: getContents
      summary: Contents
      x-codeSamples:
      - lang: bash
        label: Simple contents retrieval
        source: "curl -X POST 'https://api.exa.ai/contents' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY' \\\n  -H 'Content-Type:\
          \ application/json' \\\n  -d '{\n    \"urls\": [\"https://arxiv.org/abs/2307.06435\"],\n    \"text\": true\n  }'"
      - lang: python
        label: Simple contents retrieval
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.get_contents(\n\
          \    urls=[\"https://arxiv.org/abs/2307.06435\"],\n    text=True\n)\n\nprint(results)"
      - lang: javascript
        label: Simple contents retrieval
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.getContents(\n    [\"https://arxiv.org/abs/2307.06435\"],\n    { text: true }\n);\n\nconsole.log(results);"
      - lang: bash
        label: Advanced contents retrieval
        source: "curl --request POST \\\n  --url https://api.exa.ai/contents \\\n  --header 'x-api-key: YOUR-EXA-API-KEY'\
          \ \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"urls\": [\"https://arxiv.org/abs/2307.06435\"\
          ],\n    \"text\": {\n      \"maxCharacters\": 1000,\n      \"includeHtmlTags\": false\n    },\n    \"highlights\"\
          : {\n      \"query\": \"Key findings\"\n    },\n    \"summary\": {\n      \"query\": \"Main research contributions\"\
          \n    },\n    \"subpages\": 1,\n    \"subpageTarget\": \"references\",\n    \"extras\": {\n      \"links\": 2,\n\
          \      \"imageLinks\": 1\n    }\n  }'"
      - lang: python
        label: Advanced contents retrieval
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresults = exa.get_contents(\n\
          \    urls=[\"https://arxiv.org/abs/2307.06435\"],\n    text={\n        \"maxCharacters\": 1000,\n        \"includeHtmlTags\"\
          : False\n    },\n    highlights={\n        \"query\": \"Key findings\"\n    },\n    summary={\n        \"query\"\
          : \"Main research contributions\"\n    },\n    subpages=1,\n    subpage_target=\"references\",\n    extras={\n \
          \       \"links\": 2,\n        \"image_links\": 1\n    }\n)\n\nprint(results)"
      - lang: javascript
        label: Advanced contents retrieval
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst results\
          \ = await exa.getContents(\n    [\"https://arxiv.org/abs/2307.06435\"],\n    {\n        text: {\n            maxCharacters:\
          \ 1000,\n            includeHtmlTags: false\n        },\n        highlights: {\n            query: \"Key findings\"\
          \n        },\n        summary: {\n            query: \"Main research contributions\"\n        },\n        subpages:\
          \ 1,\n        subpageTarget: \"references\",\n        extras: {\n            links: 2,\n            imageLinks:\
          \ 1\n        }\n    }\n);\n\nconsole.log(results);"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContentsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                requestId: e492118ccdedcba5088bfc4357a8a125
                results:
                - title: A Comprehensive Overview of Large Language Models
                  url: https://arxiv.org/pdf/2307.06435.pdf
                  publishedDate: '2023-11-16T01:36:32.547Z'
                  author: Humza  Naveed, University of Engineering and Technology (UET), Lahore, Pakistan
                  id: https://arxiv.org/abs/2307.06435
                  image: https://arxiv.org/pdf/2307.06435.pdf/page_1.png
                  favicon: https://arxiv.org/favicon.ico
                  text: Abstract Large Language Models (LLMs) have recently demonstrated remarkable capabilities...
                  highlights:
                  - Such requirements have limited their adoption...
                  highlightScores:
                  - 0.4600165784358978
                  summary: This overview paper on Large Language Models (LLMs) highlights key developments...
                  subpages:
                  - id: https://arxiv.org/abs/2303.17580
                    url: https://arxiv.org/pdf/2303.17580.pdf
                    title: 'HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face'
                    author: Yongliang  Shen, Microsoft Research Asia, Kaitao  Song, Microsoft Research Asia, Xu  Tan, Microsoft
                      Research Asia, Dongsheng  Li, Microsoft Research Asia, Weiming  Lu, Microsoft Research Asia, Yueting  Zhuang,
                      Microsoft Research Asia, [email protected], Zhejiang  University, Microsoft Research Asia, Microsoft  Research,
                      Microsoft Research Asia
                    publishedDate: '2023-11-16T01:36:20.486Z'
                    text: 'HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face Date Published: 2023-05-25
                      Authors: Yongliang Shen, Microsoft Research Asia Kaitao Song, Microsoft Research Asia Xu Tan, Microsoft
                      Research Asia Dongsheng Li, Microsoft Research Asia Weiming Lu, Microsoft Research Asia Yueting Zhuang,
                      Microsoft Research Asia, [email protected] Zhejiang University, Microsoft Research Asia Microsoft Research,
                      Microsoft Research Asia Abstract Solving complicated AI tasks with different domains and modalities
                      is a key step toward artificial general intelligence. While there are abundant AI models available for
                      different domains and modalities, they cannot handle complicated AI tasks. Considering large language
                      models (LLMs) have exhibited exceptional ability in language understanding, generation, interaction,
                      and reasoning, we advocate that LLMs could act as a controller to manage existing AI models to solve
                      complicated AI tasks and language could be a generic interface to empower t'
                    summary: HuggingGPT is a framework using ChatGPT as a central controller to orchestrate various AI models
                      from Hugging Face to solve complex tasks. ChatGPT plans the task, selects appropriate models based on
                      their descriptions, executes subtasks, and summarizes the results. This approach addresses limitations
                      of LLMs by allowing them to handle multimodal data (vision, speech) and coordinate multiple models for
                      complex tasks, paving the way for more advanced AI systems.
                    highlights:
                    - 2) Recently, some researchers started to investigate the integration of using tools or models in LLMs  .
                    highlightScores:
                    - 0.32679107785224915
                  extras:
                    links: []
                context: <string>
                statuses:
                - id: https://example.com
                  status: success
                  source: cached
                costDollars:
                  total: 0.007
                  search:
                    neural: 0.007
              schema:
                $ref: '#/components/schemas/ContentsResponse'
  /answer:
    post:
      operationId: answer
      summary: Answer
      description: Performs a search based on the query and generates either a direct answer or a detailed summary with citations,
        depending on the query type.
      x-codeSamples:
      - lang: bash
        label: Simple answer
        source: "curl -X POST 'https://api.exa.ai/answer' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY' \\\n  -H 'Content-Type: application/json'\
          \ \\\n  -d '{\n    \"query\": \"What is the latest valuation of SpaceX?\",\n    \"text\": true\n  }'"
      - lang: python
        label: Simple answer
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\nresult = exa.answer(\n\
          \    \"What is the latest valuation of SpaceX?\",\n    text=True\n)\n\nprint(result)"
      - lang: javascript
        label: Simple answer
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst result\
          \ = await exa.answer(\n    'What is the latest valuation of SpaceX?',\n    { text: true }\n);\n\nconsole.log(result);"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswerRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                answer: $350 billion.
                citations:
                - id: https://www.theguardian.com/science/2024/dec/11/spacex-valued-at-350bn-as-company-agrees-to-buy-shares-from-employees
                  url: https://www.theguardian.com/science/2024/dec/11/spacex-valued-at-350bn-as-company-agrees-to-buy-shares-from-employees
                  title: SpaceX valued at $350bn as company agrees to buy shares from ...
                  author: Dan Milmon
                  publishedDate: '2023-11-16T01:36:32.547Z'
                  text: SpaceX valued at $350bn as company agrees to buy shares from ...
                  image: https://i.guim.co.uk/img/media/7cfee7e84b24b73c97a079c402642a333ad31e77/0_380_6176_3706/master/6176.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&enable=upscale&s=71ebb2fbf458c185229d02d380c01530
                  favicon: https://assets.guim.co.uk/static/frontend/icons/homescreen/apple-touch-icon.svg
                costDollars:
                  total: 0.007
                  search:
                    neural: 0.007
              schema:
                $ref: '#/components/schemas/AnswerResponse'
            text/event-stream:
              schema:
                $ref: '#/components/schemas/AnswerStreamChunk'
components:
  schemas:
    AnswerRequest:
      type: object
      properties:
        query:
          type: string
          minLength: 1
          description: Natural-language question or instructions for the request.
          example: What is the latest valuation of SpaceX?
        stream:
          type: boolean
          description: If true, the response is returned as a server-sent events (SSE) stream.
          default: false
        text:
          type: boolean
          title: Simple text retrieval
          description: If true, returns full page text with default settings. If false, disables text return.
          default: false
        outputSchema:
          type: object
          properties:
            type:
              type: string
              description: The root schema type (typically "object").
              example: object
            properties:
              type: object
              propertyNames:
                type: string
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
              description: An object where each key is a property name and each value is a JSON Schema describing that property
                (with `type`, `description`, etc).
            required:
              type: array
              items:
                type: string
              description: List of required property names.
            description:
              type: string
              description: A description of the schema.
            additionalProperties:
              type: boolean
              description: Whether to allow properties not listed in `properties`.
              default: false
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
          description: A [JSON Schema Draft 7](https://json-schema.org/draft-07) specification for the desired answer structure.
            When provided, the answer is returned as a structured object matching the schema instead of a plain string.
      required:
      - query
    AnswerResponse:
      type: object
      properties:
        requestId:
          type: string
          description: Unique identifier for the request.
          example: b5947044c4b78efa9552a7c89b306d95
        answer:
          description: The generated answer based on search results. Returns a string by default, or a structured object matching
            the provided outputSchema.
          example: $350 billion.
          oneOf:
          - type: string
          - type: object
            propertyNames:
              type: string
            additionalProperties:
              $ref: '#/components/schemas/JsonValue'
        citations:
          description: Search results used to generate the answer.
          type: array
          items:
            type: object
            properties:
              title:
                type: string
                description: The title of the search result.
                example: SpaceX valued at $350bn as company agrees to buy shares from ...
              url:
                type: string
                description: The URL of the search result.
                example: https://www.theguardian.com/science/2024/dec/11/spacex-valued-at-350bn-as-company-agrees-to-buy-shares-from-employees
                format: uri
              publishedDate:
                description: An estimate of the creation date, from parsing HTML content. Format is YYYY-MM-DD.
                example: '2023-11-16T01:36:32.547Z'
                format: date-time
                type: string
              author:
                description: If available, the author of the content.
                example: Humza Naveed
                anyOf:
                - type: string
                - type: 'null'
              id:
                description: The temporary ID for the document. Useful for the /contents endpoint.
                example: https://arxiv.org/abs/2307.06435
                type: string
              image:
                description: The URL of an image associated with the search result, if available.
                example: https://arxiv.org/pdf/2307.06435.pdf/page_1.png
                format: uri
                type: string
              favicon:
                description: The URL of the favicon for the search result's domain.
                example: https://arxiv.org/favicon.ico
                format: uri
                type: string
              text:
                description: The full text content of each source. Only present when text contents are requested.
                example: SpaceX valued at $350bn as company agrees to buy shares from ...
                type: string
            required:
            - title
            - url
            additionalProperties: false
        costDollars:
          $ref: '#/components/schemas/CostDollarsOutput'
      required:
      - answer
      additionalProperties: false
    AnswerStreamChunk:
      description: 'Schema for each JSON payload emitted in an `/answer` server-sent event stream. Each event is emitted as
        `data: <json>`.'
      oneOf:
      - type: object
        properties:
          choices:
            type: array
            items:
              type: object
              properties:
                index:
                  type: integer
                  minimum: 0
                  description: Index of this streamed choice.
                delta:
                  type: object
                  properties:
                    role:
                      type: string
                      const: assistant
                    content:
                      type: string
                    refusal:
                      anyOf:
                      - type: string
                      - type: 'null'
                  additionalProperties:
                    $ref: '#/components/schemas/JsonValue'
                  description: Incremental answer content emitted by the model.
                finish_reason:
                  description: Reason this streamed choice finished, when present.
                  oneOf:
                  - type: string
                  - type: 'null'
              required:
              - index
              - delta
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            description: OpenAI-compatible streamed completion choices with internal provider fields removed.
        required:
        - choices
        additionalProperties:
          $ref: '#/components/schemas/JsonValue'
      - type: object
        properties:
          citations:
            type: array
            items:
              type: object
              properties:
                title:
                  type: string
                  description: The title of the search result.
                  example: SpaceX valued at $350bn as company agrees to buy shares from ...
                url:
                  type: string
                  description: The URL of the search result.
                  example: https://www.theguardian.com/science/2024/dec/11/spacex-valued-at-350bn-as-company-agrees-to-buy-shares-from-employees
                  format: uri
                publishedDate:
                  description: An estimate of the creation date, from parsing HTML content. Format is YYYY-MM-DD.
                  example: '2023-11-16T01:36:32.547Z'
                  format: date-time
                  type: string
                author:
                  description: If available, the author of the content.
                  example: Humza Naveed
                  anyOf:
                  - type: string
                  - type: 'null'
                id:
                  description: The temporary ID for the document. Useful for the /contents endpoint.
                  example: https://arxiv.org/abs/2307.06435
                  type: string
                image:
                  description: The URL of an image associated with the search result, if available.
                  example: https://arxiv.org/pdf/2307.06435.pdf/page_1.png
                  format: uri
                  type: string
                favicon:
                  description: The URL of the favicon for the search result's domain.
                  example: https://arxiv.org/favicon.ico
                  format: uri
                  type: string
                text:
                  description: The full text content of each source. Only present when text contents are requested.
                  example: SpaceX valued at $350bn as company agrees to buy shares from ...
                  type: string
              required:
              - title
              - url
              additionalProperties: false
            description: Search results cited by the final streamed answer.
        required:
        - citations
        additionalProperties: false
      - type: object
        properties:
          costDollars:
            $ref: '#/components/schemas/CostDollarsOutput'
          requestId:
            type: string
            description: Unique identifier for the request.
            example: b5947044c4b78efa9552a7c89b306d95
        required:
        - costDollars
        additionalProperties: false
      - type: object
        properties:
          tag:
            type: string
            const: ERROR
          payload:
            type: object
            properties:
              error:
                type: object
          

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