# Send a report now

`POST https://api.morevoice.ai/v1/reports/{id}/send`

Computes the report for its period, stores the files and emails every recipient; returns the run when it finished. Send an Idempotency-Key: a retry with the same key returns the same run instead of emailing again. A second send of the same report while one is in progress is a 409. Needs a live key.

Authenticate with a secret API key: `Authorization: Bearer $MOREVOICE_API_KEY`.

Operation ID: `reports_send`.

## Parameters

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | yes | A report ID (`rpt_…`). |

### Headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `MoreVoice-Version` | `string` | no | The API version to use for this request. Defaults to the version the API key is pinned to. |
| `Idempotency-Key` | `string` | no | A unique key (for example a UUID) that makes this request safe to retry: for 24 hours, a retry with the same key and parameters returns the first response instead of acting twice. |

## Request body

Optional, `application/json`.

Example:

```json
{}
```

## Responses

### 200 OK

OK Returns `ReportRun`.

| Field | Type | Description |
| --- | --- | --- |
| `object` | `"report_run"` | — |
| `id` | `string` | A report run ID (prefix `rptrun_`). |
| `livemode` | `boolean` | `true` in live mode, `false` in test mode. |
| `report_id` | `string` | A report ID (prefix `rpt_`). |
| `trigger` | `string` | `scheduled`, `manual` (sent now) or `test`. |
| `status` | `string` | `running`, `sent`, `partial` (some recipients or the PDF failed) or `failed`. |
| `period_from` | `string \| null` | — |
| `period_to` | `string \| null` | — |
| `recipients` | `string[]` | — |
| `deliveries` | `object[]` | — |
| `artifacts` | `object` | Stored files you can download (GET /v1/report_runs/{id}/pdf\|csv). |
| `artifacts.pdf` | `boolean` | — |
| `artifacts.csv` | `boolean` | — |
| `error` | `string \| null` | — |
| `started_at` | `string` | An ISO-8601 timestamp in UTC. |
| `finished_at` | `string \| null` | — |

Example:

```json
{
  "artifacts": {
    "csv": false,
    "pdf": true
  },
  "deliveries": [
    {
      "email": "ops@example.com",
      "error": null,
      "status": "sent"
    }
  ],
  "error": null,
  "finished_at": "2026-11-04T06:00:09.000Z",
  "id": "rptrun_2nH8kQ1",
  "livemode": true,
  "object": "report_run",
  "period_from": "2026-11-02T22:00:00.000Z",
  "period_to": "2026-11-03T22:00:00.000Z",
  "recipients": [
    "ops@example.com"
  ],
  "report_id": "rpt_2dXk9QmZ4rTv",
  "started_at": "2026-11-04T06:00:01.000Z",
  "status": "sent",
  "trigger": "manual"
}
```

### 400 Bad Request

The request is invalid: a parameter is missing, malformed or unknown, or the version header is unknown. Returns `ErrorEnvelope`.

### 401 Unauthorized

No valid API key was sent. Returns `ErrorEnvelope`.

### 403 Forbidden

The key may not do this (a missing scope, a plan limit, or a compliance block). Returns `ErrorEnvelope`.

### 404 Not Found

No object with this ID exists in this organisation and mode. Returns `ErrorEnvelope`.

### 409 Conflict

The request conflicts with the object's state, or the Idempotency-Key was reused with other parameters. Returns `ErrorEnvelope`.

### 429 Too Many Requests

Too many requests, or no call capacity right now. Retry after the Retry-After delay. Returns `ErrorEnvelope`.

### 500 Internal Server Error

Something went wrong on MoreVoice's side. Retry with the same Idempotency-Key. Returns `ErrorEnvelope`.

## Code samples

**TypeScript**

```ts
import MoreVoice from "@morevoice/sdk";

const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment

const reportRun = await mv.reports.send("rpt_7Hk2Lm9Qp", {});
console.log(reportRun);
```

**Python**

```python
from morevoice import MoreVoice

client = MoreVoice()  # MOREVOICE_API_KEY from the environment

report_run = client.reports.send("rpt_7Hk2Lm9Qp", {})
print(report_run)
```

**cURL**

```sh
curl -X POST https://api.morevoice.ai/v1/reports/rpt_7Hk2Lm9Qp/send \
  -H "Authorization: Bearer $MOREVOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
```
