> ## Documentation Index
> Fetch the complete documentation index at: https://monid.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Discover

> Search for data endpoints using natural language.

Search for data endpoints using natural language. The API uses AI-powered routing to match your query to the best available endpoints.

## Request

```text theme={null}
POST /v1/discover
```

### Headers

| Header          | Required | Description        |
| --------------- | -------- | ------------------ |
| `Authorization` | Yes      | `Bearer <api-key>` |
| `Content-Type`  | Yes      | `application/json` |

### Body

| Field   | Type   | Required | Description                                             |
| ------- | ------ | -------- | ------------------------------------------------------- |
| `query` | string | Yes      | A short natural language search query (min 1 character) |
| `limit` | number | No       | Maximum results to return (1-20, default 5)             |

### Example Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.monid.ai/v1/discover \
    -H "Authorization: Bearer monid_live_..." \
    -H "Content-Type: application/json" \
    -d '{
      "query": "twitter posts about AI",
      "limit": 5
    }'
  ```

  ```typescript TypeScript theme={null}
  const response = await fetch("https://api.monid.ai/v1/discover", {
    method: "POST",
    headers: {
      "Authorization": "Bearer monid_live_...",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      query: "twitter posts about AI",
      limit: 5,
    }),
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.monid.ai/v1/discover",
      headers={
          "Authorization": "Bearer monid_live_...",
          "Content-Type": "application/json",
      },
      json={
          "query": "twitter posts about AI",
          "limit": 5,
      },
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200 OK

| Field                      | Type   | Description                    |
| -------------------------- | ------ | ------------------------------ |
| `results`                  | array  | Matching endpoints             |
| `results[].provider`       | string | Provider slug                  |
| `results[].providerName`   | string | Provider display name          |
| `results[].endpoint`       | string | Endpoint path                  |
| `results[].description`    | string | Endpoint description           |
| `results[].price`          | object | Pricing information            |
| `results[].price.type`     | string | `"PER_CALL"` or `"PER_RESULT"` |
| `results[].price.amount`   | number | Price in USD                   |
| `results[].price.currency` | string | `"USD"`                        |
| `query`                    | string | The original search query      |
| `count`                    | number | Number of results returned     |

### Example Response

```json theme={null}
{
  "results": [
    {
      "provider": "apify",
      "providerName": "Apify",
      "endpoint": "/apidojo/tweet-scraper",
      "description": "Scrape tweets by search terms, hashtags, or user handles",
      "price": {
        "type": "PER_CALL",
        "amount": 0.003,
        "currency": "USD"
      }
    }
  ],
  "query": "twitter posts about AI",
  "count": 1
}
```

## Next Step

Use [`POST /v1/inspect`](/api/inspect) to get full details for a discovered endpoint.
