---
title: "Search the web and optionally retrieve page contents with Exa"
method: POST
path: "/v1/exa/search"
tags: ["Proxy"]
---

# Search the web and optionally retrieve page contents with Exa

`POST /v1/exa/search`

## Request

- Base URL: `https://api.munition.io`
- URL: `https://api.munition.io/v1/exa/search`
- Auth: none required

Munition Exa Search: x402-paid neural web search for AI agents. Pay 0.01 USDC per query and get up to 25 ranked results (title, url, date, author, optional page text/highlights/summary) from Exa's semantic index. Supports categories (news, research paper, company, github, people…), domain include/exclude and date filters.

## Request body

- ExaSearchInput
  - `query` string, required: Natural-language search query.
  - `numResults` integer
  - `type` 'auto' | 'neural' | 'keyword' | 'fast'
  - `category` 'company' | 'research paper' | 'news' | 'pdf' | 'github' | 'tweet' | 'personal site' | 'linkedin profile' | 'financial report' | 'people'
  - `includeDomains` string[]
  - `excludeDomains` string[]
  - `startPublishedDate` string, date-time
  - `endPublishedDate` string, date-time
  - `contents` object: Which page contents to include. Omit for metadata only.
    - `text` union
      - boolean
      - object
        - `maxCharacters` integer
    - `highlights` union
      - boolean
      - object
        - `numSentences` integer
        - `highlightsPerUrl` integer
    - `summary` union
      - boolean
      - object
        - `query` string

## Response `200`

Successful response

- ExaSearchOutput
  - `query` string, required
  - `results` object[], required
    - `title` string, nullable
    - `url` string, uri, required
    - `publishedDate` string, nullable
    - `author` string, nullable
    - `score` number, nullable
    - `text` string, nullable: Page text when contents were requested.
    - `highlights` string[]
    - `summary` string, nullable
  - `searchType` string
  - `meta` object, required
    - `resultCount` integer, required
    - `searchedAt` string, date-time, required

## Other responses

- `400`: Invalid input; rejected before any payment is verified or settled.
- `402`: x402 payment required or settlement failed
- `409`: Idempotency conflict; do not pay again
- `422`: Upstream provider rejected the request after settlement (client-side error); payment is kept, paidCallId returned for reconciliation.
- `502`: Upstream provider failed after settlement; payment is kept, paidCallId returned for reconciliation.

---

[API](https://skmtc.dev/munition/apis/munition-api.md) · [All operations](https://skmtc.dev/munition/apis/munition-api/llms.txt) · [OpenAPI document](https://skmtc.dev/munition/apis/munition-api/revisions/3b11109809d1?raw)
