# Create sent

URL: https://docs.hanzo.ai/docs/openapi/marketing/post-marketing-beta-invites-sent

> Records what the member's browser did with its reservations: the invites sent, and the ones that failed with the mailbox's reason.

`POST /v1/marketing/beta/invites/sent`

> [Marketing →](https://docs.hanzo.ai/docs/openapi/marketing) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                                       |
| ------------- | ----------------------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/marketing/beta/invites/sent` |
| **Method**    | `POST`                                                |
| **Operation** | `post_marketing_beta_invites_sent`                    |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`                |

Records what the member's browser did with its reservations: the
invites sent, and the ones that failed with the mailbox's reason. Only the
member who reserved an invite marks it, only while it is reserved, and only
within the 24 hours it holds; anything else is left as it stands. Each invite
that becomes sent is filed on its invitee's CRM timeline, the person made when
the org held none, a CRM that cannot answer costing the timeline an entry and
never the report. It answers the named invites that are the caller's, as they
stand.

## Request

4 fields, body `application/json` (required).

| Field          | In   | Type                           | Required | Description                                          |
| -------------- | ---- | ------------------------------ | -------- | ---------------------------------------------------- |
| `failed`       | body | marketing.BetaInviteFailure\[] | —        | Failed are the invites that did not go out.          |
| `failed[].id`  | body | string                         | —        | ID is the invite's id.                               |
| `failed[].why` | body | string                         | —        | Why is the mailbox's reason, at most 200 characters. |
| `ids`          | body | string\[]                      | —        | IDs are the invites sent.                            |

## Response

| Status    | Body                     | Meaning |
| --------- | ------------------------ | ------- |
| `200`     | marketing.BetaInviteRows | ok      |
| `default` | problem-details          | refused |

`200` body — 5 fields.

| Field              | In   | Type                       | Always | Description                                 |
| ------------------ | ---- | -------------------------- | ------ | ------------------------------------------- |
| `invites`          | body | marketing.BetaInviteRow\[] | —      | Invites are those invites as they stand.    |
| `invites[].at`     | body | string                     | —      | At is when it last moved, RFC 3339 in UTC.  |
| `invites[].id`     | body | string                     | —      | ID is the invite's id.                      |
| `invites[].status` | body | string                     | —      | Status is reserved, sent, failed or joined. |
| `invites[].to`     | body | string                     | —      | To is the invited address.                  |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo marketing beta invites sent
```

**SDK**

**.ts**

```ts
import { Configuration, MarketingApi } from 'hanzoai';

const api = new MarketingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postMarketingBetaInvitesSent({ failed: [{"id":"<id>","why":"<why>"}], ids: ["<ids>"] });
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import MarketingApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = MarketingApi(client).post_marketing_beta_invites_sent(failed=[{"id":"<id>","why":"<why>"}], ids=["<ids>"])
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.MarketingAPI.PostMarketingBetaInvitesSent(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, marketing_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = marketing_api::post_marketing_beta_invites_sent(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.MarketingApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new MarketingApi(client).postMarketingBetaInvitesSent();
```

The method above is the one at the current release of the document. `hanzoai@8.5.914` (npm) and `hanzoai@8.5.914` (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. [SDKs →](https://docs.hanzo.ai/docs/sdks)

**HTTP**

```bash
curl -X POST https://api.hanzo.ai/v1/marketing/beta/invites/sent \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "failed": [
         {
           "id": "<id>",
           "why": "<why>"
         }
       ],
       "ids": [
         "<ids>"
       ]
     }'
```

**MCP**

MCP reaches **marketing** through the `marketing` tool, which names its 82 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_marketing_audiences"
         }
       }
     }'
```

---

[Marketing API](https://docs.hanzo.ai/docs/openapi/marketing) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
