# Send an Enterprise enquiry

> Page: https://docs.plotwork.dev/api/post-enterprise-enquiries. Index of every page: https://docs.plotwork.dev/llms.txt

For the Enterprise page of the Plotwork site and the Talk to sales form of the portal.

`POST /enterprise/enquiries`

## TL;DR

| Question | Answer |
|---|---|
| What does it do? | Send an Enterprise enquiry. |
| What does it take? | A JSON body of type [`EnquiryBody`](https://docs.plotwork.dev/api/schemas.md#enquirybody). |
| What does it return? | Status 200 with a body of type [`EnquiryAck`](https://docs.plotwork.dev/api/schemas.md#enquiryack). |
| What can go wrong? | `400` a field is missing, too long, or not one of the choices. the answer names each field in `details`; `413` the body is larger than 16 kib; `429` too many requests from this address; `503` this server has no database. Every failure uses the one error envelope. |

## What it does

For the Enterprise page of the Plotwork site and the Talk to sales form of the portal. Anyone may send an enquiry, signed in or not. The body is the name, work email, company, company size, number of repositories, what the company needs and use case the person typed, and from the portal where the form was opened (`context`). When the request carries a session cookie from an origin on the allowlist, the enquiry is linked to that account, its address replaces the one in the body, and the organisation `context.org` names is kept only when the account is a member; the account is never read from the body. Without a session the enquiry is linked to nothing. Plotwork stores those fields and the time, and emails them to its own inbox with the person as the reply-to; it stores no address, header or cookie with them, and deletes an enquiry 24 months after it was sent. The answer is `{ "received": true }` whatever happens after the checks, and never names where the email went. An enquiry whose `website` field is filled, or that was sent faster than a person fills the form (`elapsedMs`), is dropped with the same answer. The route is rate limited by the caller's address at the `tight` tier, which Cloudflare's rate limiter holds as a counter key for 60 seconds; Plotwork's own code does not store it. The body is capped at 16 KiB.

## Request body

The body has the type [`EnquiryBody`](https://docs.plotwork.dev/api/schemas.md#enquirybody).

| Field | Type | Required | Description |
|---|---|---|---|
| `name` | `string` | yes | The name of the person asking. at least 1 character; at most 120 characters. |
| `email` | `string` | yes | Their work email address. The reply goes here. |
| `company` | `string` | yes | The company. at least 1 character; at most 120 characters. |
| `companySize` | `"1-49" \| "50-249" \| "250-999" \| "1000-4999" \| "5000+"` | yes | How many people the company has. |
| `repos` | `"1-9" \| "10-49" \| "50-199" \| "200-999" \| "1000+"` | yes | How many repositories the team would run diagrams in. |
| `useCase` | `string` | yes | What the team wants to do, in their words. at least 10 characters; at most 2000 characters. |
| `interests` | `("sso-scim" \| "audit-siem" \| "support-sla" \| "limits" \| "self-hosting" \| "invoicing")[]` | no | What the company needs, as the boxes ticked on the form. Left out, nothing was ticked; a box named twice counts once. |
| `context` | `EnquiryContext` | no | Sent by the portal: where the form was opened. The site sends none. |
| `context.page` | `"contact" \| "plan" \| "sso" \| "integrations" \| "support" \| "audit"` | yes | The place in the portal the form was opened from, such as `sso` for the Single sign-on panel. |
| `context.org` | `string` | no | The slug of the organisation the form was opened from. Kept only when the signed-in account is a member. pattern `^[a-z0-9](?:[a-z0-9-]{1,38}[a-z0-9])$`. |
| `website` | `string` | no | Leave empty. A field people do not see: an enquiry that fills it is taken for a script and dropped, with the same answer. at most 200 characters. |
| `elapsedMs` | `integer` | yes | Milliseconds between the form being shown and being sent. An enquiry sent faster than a person can type is dropped, with the same answer. minimum 0. |

## Responses

| Status | Meaning | Body |
|---|---|---|
| 200 | Received. The same answer whether the enquiry was kept or dropped as a script. | [`EnquiryAck`](https://docs.plotwork.dev/api/schemas.md#enquiryack) |
| 400 | A field is missing, too long, or not one of the choices. The answer names each field in `details`. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 413 | The body is larger than 16 KiB. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 429 | Too many requests from this address. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |
| 503 | This server has no database. | [`ErrorResponse`](https://docs.plotwork.dev/api/schemas.md#errorresponse) |

## Response body

A 200 answer has the type [`EnquiryAck`](https://docs.plotwork.dev/api/schemas.md#enquiryack).

| Field | Type | Required | Description |
|---|---|---|---|
| `received` | `true` | yes | Always true. The enquiry was received. |

## See also

| Doc | Why |
|---|---|
| [API reference](https://docs.plotwork.dev/api/reference.md) | Every endpoint, and the error envelope |
| [Schemas](https://docs.plotwork.dev/api/schemas.md) | Every request and response type |
| [Tool reference](https://docs.plotwork.dev/mcp/tools.md) | The operations as callable tools |
