Download OpenAPI specification:Download
Spaceship API uses a combination of API key and API secret for authentication.
You can generate your API key and secret in API Manager. Use the "New API key" button to set up a new API key and follow the guide to get started. After the key setup has been successful, it should appear on the API Manager application page.
As shown in the example below, API consumers shall pass a valid API key and a corresponding API secret in the X-API-Secret headers. You do not need to encode the API key and the API secret.
curl -X GET '/api/resource' \
-H 'X-Api-Secret: F3brvQluT4s8aDB7PeFBH6qKHfH2xTKTneCjZbq3z2w7rj2vV6n_zhSvvJoQ' \
-H 'X-Api-Key: JdIS8QYFMZpVKupJtdc3'
Some API operations may take an extended period to complete. For these long-running operations, the API returns an HTTP 202 Accepted response with a spaceship-async-operationid header containing a unique operation identifier.
Initiate Operation: When you make a request that requires asynchronous processing (e.g., domain registration, transfer operations), the API immediately returns a 202 response.
Receive Operation ID: The response includes the spaceship-async-operationid header with a unique identifier for tracking the operation.
Poll for Status: Use the operation ID to poll the /v1/async-operations/{operationId} endpoint to check the current status of your operation.
Operation States: Async operations can have the following statuses:
pending - The operation is still in progresssuccess - The operation completed successfullyfailed - The operation encountered an error and could not complete# Step 1: Initiate an async operation (e.g., domain registration)
curl -X POST '/api/v1/domains/example.com' \
-H 'X-Api-Secret: YOUR_SECRET' \
-H 'X-Api-Key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{
"autoRenew": false,
"years": 1,
"privacyProtection": {
"level": "high",
"userConsent": true
},
"contacts": {
"registrant": "CONTACT_ID",
"admin": "CONTACT_ID",
"tech": "CONTACT_ID",
"billing": "CONTACT_ID"
}
}'
# Response: 202 Accepted
# Headers: spaceship-async-operationid: abc123xyz
# Step 2: Check operation status
curl -X GET '/api/v1/async-operations/abc123xyz' \
-H 'X-Api-Secret: YOUR_SECRET' \
-H 'X-Api-Key: YOUR_KEY'
# Response includes:
# - status: "pending" | "success" | "failed"
# - type: Operation type (e.g., "domains_Create")
# - details: Additional information about the operation
# - createdAt: Timestamp when operation was created
# - modifiedAt: Timestamp of last status update
Retrieves a paginated list of domains, allowing the use of query parameters to customize the response. This operation is essential for efficiently managing large collections of domains, enabling smooth navigation and retrieval without overloading the system with unnecessary data.
| take required | integer <int32> [ 1 .. 100 ] Number of response items per page |
| skip required | integer <int32> [ 0 .. 2147483647 ] Number of response items to skip |
| orderBy | Array of strings <= 1 items Items Enum: "name" "-name" "unicodeName" "-unicodeName" "registrationDate" "-registrationDate" "expirationDate" "-expirationDate" Specifies fields and order to sort the response items |
const url = 'https://spaceship.dev/api/v1/domains?take=SOME_INTEGER_VALUE&skip=SOME_INTEGER_VALUE&orderBy=SOME_ARRAY_VALUE'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "items": [
- {
- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "isPremium": false,
- "autoRenew": false,
- "registrationDate": "2100-01-01T00:00:00.000Z",
- "expirationDate": "2100-01-01T00:00:00.000Z",
- "lifecycleStatus": "registered",
- "verificationStatus": "success",
- "eppStatuses": [
- "clientTransferProhibited"
], - "suspensions": [
- {
- "reasonCode": "raaVerification"
}
], - "privacyProtection": {
- "contactForm": true,
- "level": "high"
}, - "nameservers": {
- "provider": "basic",
- "hosts": [
- "ns1.exampledomain.com",
- "ns2.exampledomain.com"
]
}, - "contacts": {
- "registrant": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "admin": "1ZdMXpapqp9sle5dl8BlppTJXAzf6",
- "tech": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "billing": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "attributes": [
- "1ZdMXpapqp9sle5dl8BlppTJXAzf8"
]
}
}
], - "total": 100
}Check domains availability.
| domains required | Array of strings <domain> (domainName) [ 1 .. 20 ] items [ items <domain > [ 4 .. 255 ] characters ] List of domain names in ASCII format (A-label) whose details are to be fetched. The domain name must be provided in a fully qualified domain format. |
{- "domains": [
- "spaceship.dev"
]
}{- "domains": [
- {
- "domain": "spaceship.dev",
- "result": "available",
- "premiumPricing": [
- {
- "operation": "register",
- "price": 10.99,
- "currency": "USD"
}
]
}
]
}Get details of a specific domain.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name in ASCII format (A-label) whose details are to be fetched. The domain name must be provided in a fully qualified domain format. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "isPremium": false,
- "autoRenew": false,
- "registrationDate": "2100-01-01T00:00:00.000Z",
- "expirationDate": "2100-01-01T00:00:00.000Z",
- "lifecycleStatus": "registered",
- "verificationStatus": "success",
- "eppStatuses": [
- "clientTransferProhibited"
], - "suspensions": [
- {
- "reasonCode": "raaVerification"
}
], - "privacyProtection": {
- "contactForm": true,
- "level": "high"
}, - "nameservers": {
- "provider": "basic",
- "hosts": [
- "ns1.exampledomain.com",
- "ns2.exampledomain.com"
]
}, - "contacts": {
- "registrant": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "admin": "1ZdMXpapqp9sle5dl8BlppTJXAzf6",
- "tech": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "billing": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "attributes": [
- "1ZdMXpapqp9sle5dl8BlppTJXAzf8"
]
}
}The provided information is for preliminary familiarization only. Once the API is implemented, this notice will be removed.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name in ASCII format (A-label) that must be deleted. The domain name must be provided in a fully qualified domain format. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com'; const options = { method: 'DELETE', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "detail": "string"
}Register a specific domain.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain name for registration. |
| autoRenew required | boolean Specifies whether automatic renewal will be enabled for the domain after the registration. After that, if autoRenew is set to true, the domain will be automatically renewed using the account’s default payment method upon each expiration |
| years required | integer <int32> [ 1 .. 10 ] Number of years to register the domain |
required | object (DomainPrivacyOptions) Privacy protection options. This parameter controls the visibility of your domain registrant contact information in the public WHOIS database. |
required | object Domain contacts are specified using contact IDs. These contact IDs can be obtained from the “Get domain info” endpoint (/domains) for an existing domain, or by creating new contacts through the “Save contact details” endpoint (/contacts). Each contact ID corresponds to a specific contact person and includes their details (such as name, address, and email). These contacts will be associated with the domain during registration. |
{- "autoRenew": false,
- "years": 1,
- "privacyProtection": {
- "level": "high",
- "userConsent": true
}, - "contacts": {
- "registrant": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "admin": "1ZdMXpapqp9sle5dl8BlppTJXAzf6",
- "tech": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "billing": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "attributes": [
- "1ZdMXpapqp9sle5dl8BlppTJXAzf8"
]
}
}{- "detail": "string"
}Allows the modification of a domain's autorenewal state.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose autorenewal state is being updated. |
Provides the new autorenewal state for the domain.
| isEnabled required | boolean Describes autorenewal state for the domain |
{- "isEnabled": true
}{- "isEnabled": true
}Check single domain availability.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name in ASCII format (A-label) whose details are to be fetched. The domain name must be provided in a fully qualified domain format. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/available'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "domain": "spaceship.dev",
- "result": "available",
- "premiumPricing": [
- {
- "operation": "register",
- "price": 10.99,
- "currency": "USD"
}
]
}Allows the modification of domain name contacts.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose contacts are being updated. |
Provides the new set of contacts or the domain.
| registrant required | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ ID of the registrant contact person |
| admin | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ ID of the admin contact person |
| tech | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ ID of the technical contact person |
| billing | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ ID of the billing contact person |
| attributes | Array of strings (contactId) <= 5 items [[a-zA-Z0-9]+] List of extended attribute contact point IDs |
{- "registrant": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "admin": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "tech": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "billing": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "attributes": [
- "1ZdMXpapqp9sle5dl8BlppTJXAzf3",
- "1ZdMXpapqp9sle5dl8BlppTJXAzf2"
]
}{- "verificationStatus": "success"
}Allows the modification of DNS settings for a specific domain by replacing its current nameservers with new ones. This operation is crucial to ensure that your domain points to the correct DNS servers, which is essential for routing traffic accurately and implementing changes in DNS management.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose nameservers should be updated. The domain name must be provided in a fully qualified domain format. |
Provides the new set of nameservers for the domain. The request must include a list of nameservers that will replace the existing ones.
| provider required | string Enum: "basic" "custom" Nameservers provider |
| hosts | Array of strings <hostname> (fqdn) [ 2 .. 12 ] items [ items <hostname > [ 4 .. 255 ] characters ] A list of nameservers to be assigned to the domain. Each nameserver must be provided in a fully qualified domain format. This field must be specified only for the "custom" provider; for the "basic" provider it should be omitted. |
{- "provider": "custom",
- "hosts": [
- "ns1.exampledomain.com",
- "ns2.exampledomain.com"
]
}{- "hosts": [
- "ns1.exampledomain.com",
- "ns2.exampledomain.com"
], - "provider": "custom"
}Get the personal nameservers for a specific domain.
Personal nameservers are a combination of A records set for a specific host and glue records set for the domain on the registry.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com A domain name whose details should be fetched. The domain name must be provided in a fully qualified domain format. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/personal-nameservers'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "records": [
- {
- "host": "ns1",
- "ips": [
- "127.0.0.1",
- "127.0.0.2"
]
}, - {
- "host": "ns2",
- "ips": [
- "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
]
}
]
}The provided information is for preliminary familiarization only. Once the API is implemented, this notice will be removed.
Personal nameservers consist of A records for a specific host and glue records at the domain registry.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name whose details should be fetched. The domain name must be provided in a fully qualified domain format. |
| currentHost required | string <hostname> [ 1 .. 255 ] characters Example: api.www The host name part of the nameserver. For example, for |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/personal-nameservers/api.www'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "ips": [
- "127.2.2.2",
- "12.22.22.21"
]
}Update the configuration for personal nameservers associated with a specific domain.
If the host in the request body differs from the host in the path, this operation will rename the host and update the IP addresses, making the old host return a 404.
Personal nameservers are a combination of A records set for a specific host and glue records set for the domain on the registry.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain name in fully qualified format whose nameserver configuration should be updated |
| currentHost required | string <hostname> [ 1 .. 255 ] characters Example: api.www The host name part of the nameserver. For example, for |
| host required | string <hostname> [ 1 .. 255 ] characters The host name of the personal nameserver |
| ips required | Array of strings <ip> (ipAddress) [ 1 .. 16 ] items [ items <ip > <= 39 characters ] List of IP addresses associated with the personal nameserver host |
{- "host": "ns1",
- "ips": [
- "127.2.2.2",
- "12.22.22.21"
]
}{- "host": "ns1",
- "ips": [
- "127.2.2.2",
- "12.22.22.21"
]
}Delete the personal nameservers host configuration for a specific domain.
Personal nameservers are a combination of A records set for a specific host and glue records set for the domain on the registry.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name in a fully qualified format whose personal nameservers host should be deleted |
| currentHost required | string <hostname> [ 1 .. 255 ] characters Example: api.www The host name part of the nameserver. For example, for |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/personal-nameservers/api.www'; const options = { method: 'DELETE', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "detail": "string"
}Allows the modification of a domain's email protection preference.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose email protection preference is being updated. |
Provides the new email protection level for the domain.
| contactForm required | boolean Indicates whether WHOIS should display the contact form link |
{- "contactForm": true
}{- "detail": "string"
}Allows the modification of a domain's privacy preference.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose privacy preference is being updated. |
Provides the new privacy level for the domain.
| privacyLevel required | string Enum: "public" "high" Describes privacy preference for the domain |
| userConsent required | boolean Expresses the user's consent for privacy changes. The operation will be performed ONLY if the flag is 'true'. |
{- "privacyLevel": "high",
- "userConsent": true
}{- "detail": "string"
}Requests domain renewal.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain name to be renewed. |
| years required | integer <int32> [ 1 .. 10 ] Renewal years |
| currentExpirationDate required | string <date-time> <= 27 characters Current expiration date |
{- "years": 1,
- "currentExpirationDate": "2100-01-01T00:00:00.000Z"
}{- "detail": "string"
}Requests domain restoration.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain name to be restored. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/restore'; const options = { method: 'POST', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "detail": "string"
}Requests domain transfer.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain name for transfer. |
| autoRenew required | boolean Specifies whether automatic renewal will be enabled for the domain after the transfer is completed. After that, if autoRenew is set to true, the domain will be automatically renewed using the account’s default payment method upon each expiration |
required | object (DomainPrivacyOptions) Privacy protection options. This parameter controls the visibility of your domain registrant contact information in the public WHOIS database. |
required | object Domain contacts are specified using contact IDs. These contact IDs can be obtained from the “Get domain info” endpoint (/domains) for an existing domain, or by creating new contacts through the “Save contact details” endpoint (/contacts). Each contact ID corresponds to a specific contact person and includes their details (such as name, address, and email). These contacts will be associated with the domain after transfer. |
| authCode | string [ 1 .. 50 ] characters ^.+$ Authorization code (EPP code) required for domain transfers. This code is mandatory for most TLDs but may be optional for certain ccTLDs, for example, the .uk. |
{- "autoRenew": false,
- "privacyProtection": {
- "level": "high",
- "userConsent": true
}, - "contacts": {
- "registrant": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "admin": "1ZdMXpapqp9sle5dl8BlppTJXAzf6",
- "tech": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "billing": "1ZdMXpapqp9sle5dl8BlppTJXAzf5",
- "attributes": [
- "1ZdMXpapqp9sle5dl8BlppTJXAzf8"
]
}, - "authCode": "abc@#$123%^&def"
}{- "detail": "string"
}Get the details of the ongoing domain transfer.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose transfer details are to be returned. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/transfer'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "startedAt": "2100-01-01T00:00:00.000Z",
- "finishedAt": "2100-01-01T00:00:00.000Z",
- "direction": "in",
- "status": "pending"
}Get the domain's auth code, also known as EPP code, authorization code, transfer code or Auth-Info Code.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose auth code is to be returned. |
const url = 'https://spaceship.dev/api/v1/domains/spaceship.com/transfer/auth-code'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "authCode": "abc@#$123%^&def",
- "expires": "2100-01-01T00:00:00.000Z"
}Allows the modification of a domain transfer lock.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose transfer lock is being updated. |
Provides the new trnasfer lock for the domain.
| isLocked required | boolean Describes transfer lock for the domain |
{- "isLocked": true
}{- "isLocked": true
}Save details for the contact and return the generated contact ID.
Validation rules for some parameters (such as
stateProvinceandpostalCode) depend on the selected country. These fields may be required based on the country’s validation logic
Key-value pairs with contact details
| firstName required | string [ 1 .. 125 ] characters ^['A-Za-z-][\s'A-Z`a-z-]+['A-Za-z-]$|^['A-Za-... Contact's first name |
| lastName required | string [ 1 .. 125 ] characters ^['A-Za-z-][\s'A-Z`a-z-]+['A-Za-z-]$|^['A-Za-... Contact's last name |
| organization | string <= 255 characters ^(?!\s)[\u0000-\u007F]{2,}(?!\s)[\u0000-\u007... Organization/Company name |
| email required | string <email> [ 3 .. 255 ] characters |
| address1 required | string <= 255 characters ^[\d#&'()./:;A-Za-z\s-,\\]+$ Address (line 1) |
| address2 | string <= 255 characters ^[\d#&'()./:;A-Za-z\s-,\\]+$ Address (line 2) |
| city required | string <= 255 characters ^['.A-Za-z-][\s'.A-Za-z-]+['.A-Za-z-]$|^['.A-... City |
| country required | string (countryCode) = 2 characters ^[A-Z]{2}$ Country code (ISO 3166-1 alpha-2) |
| stateProvince | string <= 255 characters ^['A-Za-z-][\s'A-Z`a-z-]+['A-Za-z-]$|^['A-Za-... State province name |
| postalCode | string <= 16 characters ^[\dA-Za-z-][\d\sA-Za-z-]+[\dA-Za-z-]$|^[\dA-... Postal code |
| phone required | string (phone) [ 7 .. 17 ] characters ^\+\d{1,3}\.\d{4,}$ Phone number |
| phoneExt | string <= 7 characters ^\d{0,7}$ Phone number extension |
| fax | string [ 7 .. 17 ] characters ^\+\d{1,3}\.\d{4,}$ Fax number |
| faxExt | string <= 7 characters ^\d{0,7}$ Fax number extension |
| taxNumber | string <taxNumber> <= 255 characters ^[\d./A-Za-z-][\d\s./A-Za-z-]+[\d./A-Za-z-]$|... Tax number |
{- "firstName": "John",
- "lastName": "Doe",
- "organization": "My Company",
- "address1": "286 King St.",
- "address2": "string",
- "city": "San Francisco",
- "country": "US",
- "stateProvince": "CA",
- "postalCode": "94107",
- "phone": "+1.123456789",
- "phoneExt": "256",
- "fax": "+1.123456789",
- "faxExt": "256",
- "taxNumber": "123456789"
}{- "contactId": "1ZdMXpapqp9sle5dl8BlppTJXAzf3"
}Read details of the contact by contact ID.
| contact required | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ Example: 1ZdMXpapqp9sle5dl8BlppTJXAzf5 Contact ID |
const url = 'https://spaceship.dev/api/v1/contacts/1ZdMXpapqp9sle5dl8BlppTJXAzf5'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "firstName": "John",
- "lastName": "Doe",
- "organization": "My Company",
- "address1": "286 King St.",
- "address2": "string",
- "city": "San Francisco",
- "country": "US",
- "stateProvince": "CA",
- "postalCode": "94107",
- "phone": "+1.123456789",
- "phoneExt": "256",
- "fax": "+1.123456789",
- "faxExt": "256",
- "taxNumber": "123456789"
}Save contact attributes and return the generated contact ID.
Details
| type required | string [ 2 .. 32 ] characters \w+ |
| agreementValue required | boolean When you register a domain, you agree to follow the rules set out by the registry. This agreement applies to all registrations associated with your contact information. |
| language required | string Enum: "EN" "FR" Language code in corresponding format. |
| registrantCiraCategory required | string Enum: "CCO" "CCT" "RES" "GOV" "EDU" "ASS" "HOP" "PRT" "TDM" "TRD" "PLT" "LAM" "TRS" "ABO" "INB" "LGR" "OMK" "MAJ" Cira category for registrant contact |
{- "type": "ca",
- "agreementValue": true,
- "language": "EN",
- "registrantCiraCategory": "CCT"
}{- "contactId": "1ZdMXpapqp9sle5dl8BlppTJXAzf5"
}Read attribute details by contact ID.
| contact required | string [ 27 .. 32 ] characters [a-zA-Z0-9]+ Example: 1ZdMXpapqp9sle5dl8BlppTJXAzf5 Contact ID |
const url = 'https://spaceship.dev/api/v1/contacts/attributes/1ZdMXpapqp9sle5dl8BlppTJXAzf5'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "type": "ca",
- "agreementValue": true,
- "language": "EN",
- "registrantCiraCategory": "CCT"
}Add custom DNS resource records or update TTL. Records are matched using case-insensitive comparison, except for TXT records.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose resource records are being updated. |
| force | boolean Turn-off conflicts resolution checker and force zone update |
required | Array of objects (ResourceRecordsListCreateOrUpdateItem) [ 1 .. 500 ] items |
{- "force": true,
- "items": [
- {
- "type": "A",
- "address": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "name": "@",
- "ttl": 3600
}
]
}{- "detail": "string"
}Delete custom DNS resource records. Records matched using case-insensitive comparison, except for TXT records, which are case-sensitive.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose resource records are being deleted. |
Records
| type required | string [ 1 .. 5 ] characters \w+ |
| address required | string <ipv6> (ipV6Address) <= 39 characters IPv6 address |
| name required | string [ 1 .. 253 ] characters ^(?!\.)(@|\*|([_*]\.)?(?:(?!-)(?=[^\.]*[^\W_]... Name of resource record excluding domain name part. '@' can be used as an apex domain |
[- {
- "type": "A",
- "address": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
- "name": "@"
}
]{- "detail": "string"
}Retrieves a paginated list of resource records, allowing the use of query parameters to customize the response. This operation is essential for efficiently managing large collections of resource records, enabling smooth navigation and retrieval without overloading the system with unnecessary data.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com The domain whose resource records are being fetched. |
| take required | integer <int32> [ 1 .. 500 ] Number of response items per page |
| skip required | integer <int32> [ 0 .. 2147483647 ] Number of response items to skip |
| orderBy | Array of strings <= 1 items Items Enum: "type" "-type" "name" "-name" Specifies fields and order to sort the response items |
const url = 'https://spaceship.dev/api/v1/dns/records/spaceship.com?take=SOME_INTEGER_VALUE&skip=SOME_INTEGER_VALUE&orderBy=SOME_ARRAY_VALUE'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "items": [
- {
- "type": "A",
- "name": "@",
- "ttl": 3600,
- "group": {
- "type": "custom"
}
}
], - "total": 100
}Returns a list of domains in SellerHub.
| take required | integer <int32> [ 1 .. 100 ] Number of response items per page |
| skip required | integer <int32> [ 0 .. 2147483647 ] Number of response items to skip |
const url = 'https://spaceship.dev/api/v1/sellerhub/domains?take=SOME_INTEGER_VALUE&skip=SOME_INTEGER_VALUE'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "items": [
- {
- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "displayName": "SpaceShip.com",
- "description": "Premium domain for sale",
- "status": "failed",
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPriceEnabled": true,
- "minPriceEnabled": true
}
], - "total": 100
}Creates a new domain listing in SellerHub.
Create request payload
| description | string <= 5000 characters ^[\s\S]*$ Domain description |
| displayName | string <domain> [ 4 .. 255 ] characters Display name for the domain |
| binPriceEnabled | boolean Enable or disable the Buy It Now (BIN) option |
object Buy It Now (BIN) price for the domain | |
| minPriceEnabled | boolean Enable or disable offer negotiation with minimum price |
object Minimum offer price for the domain | |
| name required | string <domain> [ 4 .. 255 ] characters Domain name in Unicode format |
{- "description": "Premium domain for sale",
- "displayName": "SpaceShip.com",
- "binPriceEnabled": true,
- "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "minPriceEnabled": true,
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "name": "spaceship.com"
}{- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "displayName": "SpaceShip.com",
- "description": "Premium domain for sale",
- "status": "failed",
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPriceEnabled": true,
- "minPriceEnabled": true
}Retrieves detailed information about a specific domain in SellerHub.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name |
const url = 'https://spaceship.dev/api/v1/sellerhub/domains/spaceship.com'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "displayName": "SpaceShip.com",
- "description": "Premium domain for sale",
- "status": "failed",
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPriceEnabled": true,
- "minPriceEnabled": true
}Updates the configuration and pricing settings for a specific domain in SellerHub. Only provided fields will be updated.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Update request payload |
| description | string <= 5000 characters ^[\s\S]*$ Domain description |
| displayName | string <domain> [ 4 .. 255 ] characters Display name for the domain |
| binPriceEnabled | boolean Enable or disable the Buy It Now (BIN) option |
object Buy It Now (BIN) price for the domain | |
| minPriceEnabled | boolean Enable or disable offer negotiation with minimum price |
object Minimum offer price for the domain |
{- "description": "Premium domain for sale",
- "displayName": "SpaceShip.com",
- "binPriceEnabled": true,
- "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "minPriceEnabled": true,
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}
}{- "name": "xn--spceship-9ya.com",
- "unicodeName": "spaceship.com",
- "displayName": "SpaceShip.com",
- "description": "Premium domain for sale",
- "status": "failed",
- "minPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPrice": {
- "amount": "10.99",
- "currency": "USD"
}, - "binPriceEnabled": true,
- "minPriceEnabled": true
}Removes a domain from SellerHub.
| domain required | string <domain> [ 4 .. 255 ] characters Example: spaceship.com Domain name |
const url = 'https://spaceship.dev/api/v1/sellerhub/domains/spaceship.com'; const options = { method: 'DELETE', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "detail": "string"
}Returns verification options for domain ownership verification in SellerHub.
The response contains one or more verification options. You can choose ANY of the returned options (OR logic) that works best for your DNS setup. Within a chosen option, ALL records must be created (AND logic).
Important: The returned verification records are associated with your SellerHub account and can be used to verify ownership of ALL domains you want to add to SellerHub. You only need to create these DNS records once per account, not separately for each domain.
Usage:
options arrayrecords array on any domainThis verification process is required for adding external domains to SellerHub.
const url = 'https://spaceship.dev/api/v1/sellerhub/verification-records'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "options": [
- {
- "records": [
- {
- "type": "TXT",
- "name": "@",
- "value": "spaceship-verification-token-abc123"
}
]
}, - {
- "records": [
- {
- "type": "A",
- "name": "_spaceship_verify",
- "value": "192.0.2.1"
}, - {
- "type": "AAAA",
- "name": "_spaceship_verify",
- "value": "2001:db8::1"
}
]
}
]
}Retrieves the details of an async operation, including its status and any associated details. This operation is essential for tracking the progress and outcome of async operations, providing users with the necessary information to manage their requests effectively.
| operationId required | string <= 36 characters ^[a-zA-Z0-9]+$ Unique ID of async operation |
const url = 'https://spaceship.dev/api/v1/async-operations/%7BoperationId%7D'; const options = { method: 'GET', headers: {'X-API-Key': 'REPLACE_KEY_VALUE', 'X-API-Secret': 'REPLACE_KEY_VALUE'} }; fetch(url, options) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error(err));
{- "status": "pending",
- "type": "domains_Create",
- "details": { },
- "createdAt": "2100-01-01T00:00:00.000Z",
- "modifiedAt": "2100-01-01T00:00:00.000Z"
}