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

# API Reference

> Explore the Evermuse API endpoints for data ingestion and batch management.

The Evermuse API lets you send your data into Evermuse for analysis. You send records as JSON or newline-delimited JSON (NDJSON), and Evermuse validates, stores, and processes them in the [Data Lake](/data-lake).

## Base URL

```
https://api.evermuse.com
```

## Available Endpoints

<CardGroup cols={1}>
  <Card title="POST /api/v1/ingest" horizontal icon="upload" href="/api-reference/ingestion/ingest">
    Send one or more records to Evermuse. Accepts a single record, an array, or a `{ "records": [...] }` wrapper.
  </Card>

  <Card title="GET /api/v1/ingest/batches" horizontal icon="list" href="/api-reference/ingestion/get-batches">
    List all batches you've submitted, newest first. Supports cursor-based pagination.
  </Card>

  <Card title="GET /api/v1/ingest/batches/{batchId}" horizontal icon="magnifying-glass" href="/api-reference/ingestion/get-batch-status">
    Check the status of a batch you submitted. Returns record counts, processing status, and attachment download progress.
  </Card>
</CardGroup>

## Content Types

| Content-Type           | When to use                                                                       |
| ---------------------- | --------------------------------------------------------------------------------- |
| `application/json`     | Single record, array, or `{ "records": [...] }` wrapper. Best for most use cases. |
| `application/x-ndjson` | One JSON object per line. Best for high-volume sends.                             |

## Authentication

Every request must include your API key in the `x-api-key` header. Keys must have the `api:write` permission to send data. See [Authentication](/authentication) for setup instructions.

```bash theme={null}
curl -X POST https://api.evermuse.com/api/v1/ingest \
  -H "Content-Type: application/json" \
  -H "x-api-key: em_sk_your_api_key" \
  -d '{ ... }'
```

## Record Format

Each record follows the Integration Envelope schema. The required fields are:

| Field             | Description                                                                                                             |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `_type`           | The type of data: `email`, `call`, `meeting_notes`, `conversation`, `message`, `email_thread`, or `call_transcription`. |
| `_schema_version` | Always `"1.0.0"`.                                                                                                       |
| `_event_at`       | When the event occurred, as an ISO-8601 UTC timestamp (e.g., `2026-02-24T12:34:56Z`).                                   |
| `_vendor_ids`     | One or more IDs from your source system. Used for deduplication.                                                        |
| `_product_id`     | The product this record belongs to. Find this in **Settings > Projects** in the Evermuse dashboard.                     |
| `_project_id`     | The project this record belongs to. Found alongside the product ID in the dashboard.                                    |
| `data`            | Your data payload. Include all relevant fields from your source system.                                                 |

Optional fields like `_participants`, `_attachments`, `_tags`, `_thread_id`, and `_pii` are documented on each endpoint page.

<Tip>
  **Finding your product and project IDs** — Go to **Settings > Projects** in the Evermuse dashboard and click the copy button in the Actions column. This copies a JSON object with `_product_id` and `_project_id` ready to paste into your records.
</Tip>

## Batching

All records in a single request must share the same `_type` and `_product_id`. A batch can contain up to 1,000 records. For details on what happens after you send a batch, see [Data Lake](/data-lake).

## API Limits

| Limit                     | Value                |
| ------------------------- | -------------------- |
| Max payload size          | 5 MB                 |
| Max records per request   | 1,000                |
| Max attachment size       | 2 GB                 |
| Max attachments per batch | 1,000                |
| Rate limit                | 10 req/s per API key |
