---
raw: true
search:
  tags:
    - Domains
    - POST
seo:
  description: >-
    Saves the person or organization a domain is registered to. Ask the user for
    these… Reference for the POST /v1/domains/contacts endpoint in the Spacefast
    API.
sidebar:
  label: Save a registrant contact
  badge: POST
title: Save a registrant contact
type: openapi-operation
---
Saves the person or organization a domain is registered to. Ask the user for these details; never invent them. Pass its id as `contactId` to purchaseDomain. One contact per team is usually enough; reuse it from listDomainContacts.

`POST /v1/domains/contacts`

**Request body** (`application/json`, required)

- `firstName` (string, required)
- `lastName` (string, required)
- `organization` (string)
- `address1` (string, required)
- `address2` (string)
- `city` (string, required)
- `state` (string, required)
- `postalCode` (string, required)
- `countryCode` (string, required)
- `email` (string<email>, required)
- `phone` (string, required)
- `teamId` (string) — Owning team. Defaults to the active team.

Request body example:

```json
{
  "firstName": "string",
  "lastName": "string",
  "organization": "string",
  "address1": "string",
  "address2": "string",
  "city": "string",
  "state": "string",
  "postalCode": "string",
  "countryCode": "st",
  "email": "user@example.com",
  "phone": "strings",
  "teamId": "string"
}
```

**Responses**

- `201` — Response for status 201
- `default` — Problem details (RFC 9457). Any 4xx/5xx response is one \`application/problem+json\` document.

Response example, 201:

```json
{
  "$schema": "http://example.com",
  "data": {
    "firstName": "string",
    "lastName": "string",
    "organization": "string",
    "address1": "string",
    "address2": "string",
    "city": "string",
    "state": "string",
    "postalCode": "string",
    "countryCode": "st",
    "email": "user@example.com",
    "phone": "strings",
    "id": "string",
    "teamId": "string",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
}
```
