---
title: "Prepare a domain for the help desk"
method: POST
path: "/domains/{domain}/help-desk"
tags: ["domains"]
---

# Prepare a domain for the help desk

`POST /domains/{domain}/help-desk`

## Request

- Base URL: `https://api.sparkvault.com/v1`
- URL: `https://api.sparkvault.com/v1/domains/{domain}/help-desk`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sparkvault/apis/sparkvault-api/docs/domains/:domain/help-desk/post.ts> (a function with typed inputs; its response is checked against the schema)

Make one of the organization's own domains ready to be its help desk's address: set up sending from it when it has none, register it as a web host of the help desk, and once the web host is live and the desk active, mail a check to the domain that proves it receives replies. Asking again refreshes each from its provider. A zone apex cannot carry the desk: use a subdomain. Org admins only, from their own session; the organization must hold the help desk.

## Path parameters

- `domain` string, required

## Response `200`

The domain as it stands.

- object
  - `data` object, required
    - `domain` object, required: The domain, as GET /domains/{domain} answers it.
  - `meta` ResponseMeta: Envelope metadata present on every successful response.
    - `api_version` string
    - `request_id` string
    - `response_ms` integer
    - `timestamp` integer: Unix seconds.
    - `pools` object: Storage and bandwidth capacity snapshot for the account.
    - `billing` object
      - `past_due` boolean
    - `quota` object: This minute of the account request budget. Present on authenticated success responses that passed the throttle; absent otherwise.
      - `limit` integer
      - `used` integer
      - `remaining` integer
      - `resets_at` integer: Unix seconds.

## Other responses

- `400`: VALIDATION_ERROR — the domain's ownership lapsed (`details.reason` ownership_lapsed), or it is a zone apex (`details.reason` zone_apex).
- `401`: AUTHENTICATION_ERROR — missing or invalid credentials.
- `403`: FORBIDDEN — the caller is not an org admin, or the credential is an API key or an impersonated session. HELP_DESK_SUBSCRIPTION_REQUIRED — the organization does not hold the help desk.
- `404`: NOT_FOUND — the organization does not hold this domain.
- `409`: DOMAIN_CHECK_REQUIRED — check the domain's DNS first. CONFLICT — the domain changed meanwhile; try again.
- `502`: INTERNAL_ERROR — the help-desk host service did not complete the web host's registration; try again.
- `503`: EMAIL_SETUP_BUSY — another request is setting up the organization's email (`Retry-After` carries 5 seconds), or email setup is busy right now; repeat the request in a moment. INTERNAL_ERROR — this deployment cannot send the help desk's email.

## Changes

- **2026-10-28** `a9a10e328ba5`: 28 info
  - the response property `error/details` became required for the status `400`
  - the response property `error/details` became required for the status `401`
  - the response property `error/details` became required for the status `403`
  - the response property `error/details` became required for the status `404`
  - …24 more
- **2026-10-28** `56d7c265a77a`: 7 breaking
  - the response property `error/details` became nullable for the status `400`
  - the response property `error/details` became nullable for the status `401`
  - the response property `error/details` became nullable for the status `403`
  - the response property `error/details` became nullable for the status `404`
  - …3 more
- **2026-10-22** `f5ac9c809ef7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sparkvault/apis/sparkvault-api/changes/domains/:domain/help-desk/post.md)

---

[API](https://skmtc.dev/sparkvault/apis/sparkvault-api.md) - [All operations](https://skmtc.dev/sparkvault/apis/sparkvault-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sparkvault/apis/sparkvault-api/revisions/97cfadccd0c0?raw)
