Exa

Exa Research API

Asynchronous multi-step deep-research tasks. Submit a research instruction, Exa orchestrates a Deep Search agent across the live web with structured outputs and web-grounded citations, and you poll for the completed report. Lives under /research/v1 with create, get, and list operations.

OpenAPI Specification

exa-research-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Exa Research API
  version: 2.0.0
  description: Exa Research API - subset of the Exa Public API.
servers:
- url: https://api.exa.ai
security:
- apiKey: []
- bearer: []
paths:
  /research/v1:
    get:
      description: Get a paginated list of research requests
      operationId: ResearchController_listResearch
      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: Number of results per page (1-50)
        schema:
          minimum: 1
          maximum: 50
          default: 10
          type: number
      responses:
        '200':
          description: List of research requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResearchResponseDto'
      summary: List research requests
      tags:
      - Research
      x-codeSamples:
      - lang: bash
        label: List research tasks
        source: "curl -X GET 'https://api.exa.ai/research/v1?limit=10' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY'"
      - lang: python
        label: List research tasks
        source: '# pip install exa-py

          from exa_py import Exa

          exa = Exa(api_key=''YOUR_EXA_API_KEY'')


          tasks = exa.research.list_tasks(limit=10)

          print(tasks)'
      - lang: javascript
        label: List research tasks
        source: '// npm install exa-js

          import Exa from ''exa-js'';

          const exa = new Exa(''YOUR_EXA_API_KEY'');


          const tasks = await exa.research.listTasks({ limit: 10 });

          console.log(tasks);'
    post:
      operationId: ResearchController_createResearch
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResearchCreateRequestDtoClass'
      responses:
        '201':
          description: Research request created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResearchDtoClass'
      summary: Create a new research request
      tags:
      - Research
      x-codeSamples:
      - lang: bash
        label: Create research task
        source: "curl -X POST 'https://api.exa.ai/research/v1' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY' \\\n  -H 'Content-Type:\
          \ application/json' \\\n  -d '{\n    \"instructions\": \"Summarize the latest developments in AI safety research\"\
          ,\n    \"model\": \"exa-research\"\n  }'"
      - lang: python
        label: Create research task
        source: "# pip install exa-py\nfrom exa_py import Exa\nexa = Exa(api_key='YOUR_EXA_API_KEY')\n\ntask = exa.research.create_task(\n\
          \    instructions=\"Summarize the latest developments in AI safety research\",\n    model=\"exa-research\"\n)\n\n\
          print(task)"
      - lang: javascript
        label: Create research task
        source: "// npm install exa-js\nimport Exa from 'exa-js';\nconst exa = new Exa('YOUR_EXA_API_KEY');\n\nconst task\
          \ = await exa.research.createTask({\n  instructions: \"Summarize the latest developments in AI safety research\"\
          ,\n  model: \"exa-research\"\n});\n\nconsole.log(task);"
  /research/v1/{researchId}:
    get:
      description: Retrieve research by ID. Add ?stream=true for real-time SSE updates.
      operationId: ResearchController_getResearch
      parameters:
      - name: researchId
        required: true
        in: path
        description: The unique identifier of the research request to retrieve
        schema:
          type: string
      - name: stream
        required: false
        in: query
        description: Set to "true" to receive real-time updates via Server-Sent Events (SSE)
        schema:
          type: string
      - name: events
        required: false
        in: query
        description: Set to "true" to include the detailed event log of all operations performed
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResearchDtoClass'
      summary: Get a research request by id
      tags:
      - Research
      x-codeSamples:
      - lang: bash
        label: Get research task
        source: "curl -X GET 'https://api.exa.ai/research/v1/01jszdfs0052sg4jc552sg4jc5' \\\n  -H 'x-api-key: YOUR-EXA-API-KEY'"
      - lang: bash
        label: Get research task with streaming
        source: "curl -X GET 'https://api.exa.ai/research/v1/01jszdfs0052sg4jc552sg4jc5?stream=true' \\\n  -H 'x-api-key:\
          \ YOUR-EXA-API-KEY'"
      - lang: python
        label: Get research task
        source: '# pip install exa-py

          from exa_py import Exa

          exa = Exa(api_key=''YOUR_EXA_API_KEY'')


          task = exa.research.get_task(''01jszdfs0052sg4jc552sg4jc5'')

          print(task)'
      - lang: javascript
        label: Get research task
        source: '// npm install exa-js

          import Exa from ''exa-js'';

          const exa = new Exa(''YOUR_EXA_API_KEY'');


          const task = await exa.research.getTask(''01jszdfs0052sg4jc552sg4jc5'');

          console.log(task);'
components:
  schemas:
    ListResearchResponseDto:
      type:
      - object
      properties:
        data:
          type:
          - array
          items:
            discriminator:
              propertyName: status
            examples:
            - researchId: 01jszdfs0052sg4jc552sg4jc5
              model: exa-research
              instructions: What species of ant are similar to honeypot ants?
              status: running
            - researchId: 01jszdfs0052sg4jc552sg4jc5
              model: exa-research
              instructions: What species of ant are similar to honeypot ants?
              status: completed
              output: Melophorus bagoti
            $ref: '#/components/schemas/ResearchDtoClass'
          description: Research requests ordered by creation time (newest first)
        hasMore:
          type:
          - boolean
          description: If true, use nextCursor to fetch more results
        nextCursor:
          type:
          - string
          - 'null'
          description: Pass this value as the cursor parameter to fetch the next page
      required:
      - data
      - hasMore
      - nextCursor
    ResearchCreateRequestDtoClass:
      type:
      - object
      properties:
        model:
          default: exa-research
          type:
          - string
          enum:
          - exa-research-fast
          - exa-research
          - exa-research-pro
          description: Research model to use. exa-research is faster and cheaper, while exa-research-pro provides more thorough
            analysis and stronger reasoning.
        instructions:
          type:
          - string
          maxLength: 50000
          description: Instructions for what you would like research on. A good prompt clearly defines what information you
            want to find, how research should be conducted, and what the output should look like.
        outputSchema:
          type:
          - object
          additionalProperties: {}
          description: JSON Schema to enforce structured output. When provided, the research output will be validated against
            this schema and returned as parsed JSON.
      required:
      - instructions
      examples:
      - model: exa-research
        instructions: What species of ant are similar to honeypot ants?
    ResearchDtoClass:
      discriminator:
        propertyName: status
      oneOf:
      - type:
        - object
        properties:
          researchId:
            type:
            - string
            description: Unique identifier for tracking and retrieving this research request
          createdAt:
            type:
            - number
            description: When the research was created (Unix timestamp in milliseconds)
          model:
            default: exa-research
            type:
            - string
            enum:
            - exa-research-fast
            - exa-research
            - exa-research-pro
            description: The model used for this research request
          instructions:
            type:
            - string
            description: The original research instructions provided
          outputSchema:
            type:
            - object
            additionalProperties: {}
            description: The JSON Schema used to validate the output, if provided
          status:
            type:
            - string
            enum:
            - pending
        required:
        - researchId
        - createdAt
        - instructions
        - status
        title: Pending
      - type:
        - object
        properties:
          researchId:
            type:
            - string
            description: Unique identifier for tracking and retrieving this research request
          createdAt:
            type:
            - number
            description: When the research was created (Unix timestamp in milliseconds)
          model:
            default: exa-research
            type:
            - string
            enum:
            - exa-research-fast
            - exa-research
            - exa-research-pro
            description: The model used for this research request
          instructions:
            type:
            - string
            description: The original research instructions provided
          outputSchema:
            type:
            - object
            additionalProperties: {}
            description: The JSON Schema used to validate the output, if provided
          status:
            type:
            - string
            enum:
            - running
          events:
            type:
            - array
            items:
              $ref: '#/components/schemas/ResearchEventDtoClass'
            description: Real-time log of operations as research progresses. Poll this endpoint or use ?stream=true for live
              updates.
        required:
        - researchId
        - createdAt
        - instructions
        - status
        title: Running
      - type:
        - object
        properties:
          researchId:
            type:
            - string
            description: Unique identifier for tracking and retrieving this research request
          createdAt:
            type:
            - number
            description: When the research was created (Unix timestamp in milliseconds)
          model:
            default: exa-research
            type:
            - string
            enum:
            - exa-research-fast
            - exa-research
            - exa-research-pro
            description: The model used for this research request
          instructions:
            type:
            - string
            description: The original research instructions provided
          outputSchema:
            type:
            - object
            additionalProperties: {}
            description: The JSON Schema used to validate the output, if provided
          status:
            type:
            - string
            enum:
            - completed
          events:
            type:
            - array
            items:
              $ref: '#/components/schemas/ResearchEventDtoClass'
            description: Detailed log of all operations performed during research. Use ?events=true to include this field
              for debugging or monitoring progress.
          output:
            type:
            - object
            properties:
              content:
                type:
                - string
                description: The complete research output as text. If outputSchema was provided, this is a JSON string.
              parsed:
                type:
                - object
                additionalProperties: {}
                description: Structured JSON object matching your outputSchema. Only present when outputSchema was provided
                  and the output successfully validated.
            required:
            - content
            description: The final research results, containing both raw text and parsed JSON if outputSchema was provided
          citations:
            type:
            - array
            items:
              type:
              - object
              properties:
                id:
                  type:
                  - string
                url:
                  type:
                  - string
                publishedDate:
                  type:
                  - string
                author:
                  type:
                  - string
                  - 'null'
                score:
                  type:
                  - number
                text:
                  type:
                  - string
                highlights:
                  type:
                  - array
                  items:
                    type:
                    - string
                highlightScores:
                  type:
                  - array
                  items:
                    type:
                    - number
                summary:
                  type:
                  - string
                links:
                  type:
                  - array
                  items:
                    type:
                    - object
                    properties:
                      url:
                        type:
                        - string
                      text:
                        type:
                        - string
                    required:
                    - url
                    - text
                subpages:
                  type:
                  - array
                  items:
                    type:
                    - object
                    properties:
                      id:
                        type:
                        - string
                      title:
                        type:
                        - string
                      url:
                        type:
                        - string
                      publishedDate:
                        type:
                        - string
                      author:
                        type:
                        - string
                        - 'null'
                      text:
                        type:
                        - string
                      favicon:
                        type:
                        - string
                    required:
                    - id
                    - title
                    - url
                image:
                  type:
                  - string
                  - 'null'
                  description: URL of the image associated with the result
                favicon:
                  type:
                  - string
                  - 'null'
                  description: URL of the favicon associated with the result
                description:
                  type:
                  - string
                subtitle:
                  type:
                  - string
                snippet:
                  type:
                  - string
                profile:
                  discriminator:
                    propertyName: type
                  oneOf:
                  - type:
                    - object
                    properties:
                      type:
                        type:
                        - string
                        enum:
                        - linkedin_company
                      content:
                        type:
                        - object
                        properties:
                          name:
                            type:
                            - string
                          url:
                            type:
                            - string
                          slogan:
                            type:
                            - string
                          about_us:
                            type:
                            - string
                          founded_year:
                            type:
                            - number
                          funding:
                            type:
                            - object
                            properties:
                              number_of_rounds:
                                type:
                                - string
                              price:
                                type:
                                - string
                              last_round_date:
                                type:
                                - string
                              last_round_stage:
                                type:
                                - string
                          website:
                            type:
                            - string
                          categories:
                            type:
                            - array
                            items:
                              type:
                              - string
                          industry:
                            type:
                            - string
                          image_url:
                            type:
                            - string
                          cover_image_url:
                            type:
                            - string
                          employees_num:
                            type:
                            - number
                          followers_num:
                            type:
                            - number
                          company_size:
                            type:
                            - string
                          company_type:
                            type:
                            - string
                          affiliated_companies:
                            type:
                            - array
                            - 'null'
                            items:
                              type:
                              - object
                              properties:
                                company_name:
                                  type:
                                  - string
                                industry:
                                  type:
                                  - string
                                social_url:
                                  type:
                                  - string
                                image_url:
                                  type:
                                  - string
                          headquarters:
                            type:
                            - string
                          country_code:
                            type:
                            - string
                          locations:
                            type:
                            - array
                            items:
                              type:
                              - object
                              properties:
                                address:
                                  type:
                                  - string
                                  - 'null'
                                address_2:
                                  type:
                                  - string
                                  - 'null'
                                primary:
                                  type:
                                  - boolean
                              required:
                              - primary
                          specialties:
                            type:
                            - array
                            items:
                              type:
                              - string
                          crunchbase_url:
                            type:
                            - string
                          stock_symbol:
                            type:
                            - string
                          meta_data:
                            type:
                            - object
                            properties:
                              last_changed:
                                type:
                                - string
                              schema_version:
                                type:
                                - string
                              profile_id:
                                type:
                                - string
                            required:
                            - schema_version
                            - profile_id
                        required:
                        - name
                        - url
                        - meta_data
                    required:
                    - type
                    - content
                  - type:
                    - object
                    properties:
                      type:
                        type:
                        - string
                        enum:
                        - company
                      content:
                        oneOf:
                        - type:
                          - object
                          properties:
                            url:
                              type:
                              - string
                            linkedin_url:
                              type:
                              - string
                            version:
                              default: 1-complete
                              type:
                              - string
                              enum:
                              - 1-complete
                            identity:
                              type:
                              - object
                              properties:
                                name:
                                  type:
                                  - string
                                legal_name:
                                  type:
                                  - string
                                  - 'null'
                                aliases:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                ids:
                                  type:
                                  - object
                                  - 'null'
                                  properties:
                                    coresignal:
                                      type:
                                      - string
                                      - 'null'
                                    linkedin:
                                      type:
                                      - string
                                      - 'null'
                                    crunchbase:
                                      type:
                                      - string
                                      - 'null'
                                    pitchbook:
                                      type:
                                      - string
                                      - 'null'
                                tickers:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - object
                                    properties:
                                      symbol:
                                        type:
                                        - string
                                      exchange:
                                        type:
                                        - string
                                        - 'null'
                                    required:
                                    - symbol
                              required:
                              - name
                            classification:
                              type:
                              - object
                              - 'null'
                              properties:
                                industry:
                                  type:
                                  - string
                                  - 'null'
                                industries:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                categories:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                keywords:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                sic_codes:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                naics_codes:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                is_b2b:
                                  type:
                                  - boolean
                                  - 'null'
                                is_public:
                                  type:
                                  - boolean
                                  - 'null'
                                company_type:
                                  type:
                                  - string
                                  - 'null'
                            locations:
                              type:
                              - object
                              - 'null'
                              properties:
                                headquarters:
                                  type:
                                  - object
                                  - 'null'
                                  properties:
                                    address:
                                      type:
                                      - string
                                      - 'null'
                                    city:
                                      type:
                                      - string
                                      - 'null'
                                    state:
                                      type:
                                      - string
                                      - 'null'
                                    country:
                                      type:
                                      - string
                                      - 'null'
                                    country_code:
                                      type:
                                      - string
                                      - 'null'
                                    postal_code:
                                      type:
                                      - string
                                      - 'null'
                                    is_hq:
                                      type:
                                      - boolean
                                      - 'null'
                                offices:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - object
                                    properties:
                                      address:
                                        type:
                                        - string
                                        - 'null'
                                      city:
                                        type:
                                        - string
                                        - 'null'
                                      state:
                                        type:
                                        - string
                                        - 'null'
                                      country:
                                        type:
                                        - string
                                        - 'null'
                                      country_code:
                                        type:
                                        - string
                                        - 'null'
                                      postal_code:
                                        type:
                                        - string
                                        - 'null'
                                      is_hq:
                                        type:
                                        - boolean
                                        - 'null'
                                hq_city:
                                  type:
                                  - string
                                  - 'null'
                                hq_country:
                                  type:
                                  - string
                                  - 'null'
                                regions:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                            profiles:
                              type:
                              - object
                              - 'null'
                              properties:
                                website:
                                  type:
                                  - string
                                  - 'null'
                                website_aliases:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - string
                                social:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type:
                                    - object
                                    properties:
                                      platform:
                                        type:
                                        - string
                                      url:
                                        type:
                                        - string
                                        - 'null'
                                      followers:
                                        type:
                                        - number
     

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