code the exact reason. Each endpoint lists its codes under Possible Errors.
{
"error": {
"code": "AUTH_003",
"message": "User not logged in"
}
}
When parameters are wrong (INPUT_001), the error also lists them in invalid_params, and some endpoints add fields: each field with its error keys.
{
"error": {
"code": "INPUT_001",
"message": "Invalid phone number",
"fields": {
"phone_number": ["phone.constraint.invalid"]
}
}
}
Enter your API key here to use it for all test requests. The key will be saved in your browser.
API key OK Needs contacts.view.
Description: List your contacts. phone_number is the national number without the country code, and ready_tlds lists the extensions for which the contact already has its registry-specific information. API keys need contacts.view.
API key OK Needs contacts.view.
Description: Get one contact, in the same format as GET contacts: phone_number is the national number without the country code, and ready_tlds lists the extensions for which the contact already has its registry-specific information. Admins can get any user's contact. API keys need contacts.view.
API key OK Needs contacts.create.
Description: Create a new contact for the current user. API keys need contacts.create.
When field validation fails (error code INPUT_001), the response includes field-specific error details:
{
"error": {
"code": "INPUT_001",
"message": "Invalid phone number",
"fields": {
"phone_number": [
"phone.constraint.invalid"
]
}
}
}Validation Details:
API key OK Needs contacts.modify.
Description: Change a contact's email, phone number, VAT number, address or default setting; the country can't be changed (create a new contact instead). A new VAT number or postal code recalculates the contact's VAT percentage and type. If the contact is registered at a domain registry, the change is sent there too; if the registry refuses it, nothing is saved. API keys need contacts.modify.
{
"vat_number": "DE123456789",
"company_name": "New Company GmbH",
"address": {
"country_id": 81
}
}API key OK Needs contacts.required_info.
Description: Add registry-specific required information to a contact. Use GET /tlds/required_info first to see which fields are needed; fields not listed there are filled in automatically. The information is checked at the registry: if that fails, nothing is saved and field errors are returned (INPUT_002). API keys need contacts.required_info.
API key OK Needs contacts.delete.
Description: Delete a specific contact by ID. API keys need contacts.delete.
No login needed
Description: Get all countries, sorted by country code by default. callingCode is the international calling code as a number, without + or 00 (31 for NL). vatPercentage is the VAT rate in percent and may have decimals.
No login needed
Description: Get a specific country by ID
API key OK Needs dns_templates.view.
Description: Get DNS templates for the authenticated user. Returns templates with integer domain IDs and public DNS records only. API keys need dns_templates.view.
API key OK Needs dns_templates.view.
Description: Get a single DNS template by ID. Returns integer domain IDs and public DNS records only. API keys need dns_templates.view.
API key OK Needs dns_templates.modify.
Description: Create a DNS template for the authenticated user. Applies application-host default DNS records. domain_names must be an array of integer domain IDs owned by the user. API keys need dns_templates.modify.
API key OK Needs dns_templates.modify.
Description: Update DNS template metadata (name and/or linked domains). domain_names must be an array of integer domain IDs owned by the user. Does not modify dns_records. API keys need dns_templates.modify.
API key OK Needs dns_templates.modify.
Description: Replace DNS records of a DNS template. Uses the same DNS validation/normalization logic as PATCH /domain_names/{id}/dns_records and preserves %domain% placeholders. Returns public records only. API keys need dns_templates.modify.
API key OK Needs dns_templates.modify.
Description: Delete DNS template by ID. Domain links are cleared by database foreign-key constraints. API keys need dns_templates.modify.
API key OK Needs domains.view.
Description: Get email addresses, forwarders, and catch-all addresses for owned regular and external domains. API keys need domains.view.
API key OK Needs domains.email.sync.
Description: Get the status of a domain email sync process. API keys need domains.email.sync.
API key OK Needs domains.email.sync.
Description: List the sync processes of your mailboxes, newest first, in the same format as GET domain_name_emails/sync/process/{id}. API keys need domains.email.sync.
API key OK Needs domains.email.manage.
Description: Create a mailbox, forwarder, or catch-all address on a regular or external domain. Requires an active plan, active regular domain status, linked mail server, and available plan email quota. API keys need domains.email.manage.
API key OK Needs domains.email.sync.
Description: Start an async mailbox import from the remote mailbox into the local mailbox. Returns HTTP 202 with sync_direction, local_mailbox, remote_mailbox, and process status details. API keys need domains.email.sync.
API key OK Needs domains.email.manage.
Description: Change the target for a forwarder or catch-all address. API keys need domains.email.manage.
API key OK Needs domains.email.manage.
Description: Change mailbox password. Forwarders and catch-all addresses are rejected. API keys need domains.email.manage.
API key OK Needs domains.email.delete.
Description: Delete a mailbox, forwarder, or catch-all address. Mailbox deletion also creates a mail-server todo delete task. API keys need domains.email.delete.
API key OK Needs domains.view.
Description: List the domain name orders that the sidebar currently shows as pending or with a problem, newest (highest ID) first. Each order has the same base fields as GET /domain_name_orders/{id}, without process attempts or live registry information. API keys need domains.view.
[
{
"id": 123,
"type": "domain_name_order",
"status": "transfer_pending",
"product": {
"name": "Transfer"
},
"domain_name": "example.com"
}
]API key OK Needs domains.view.
Description: Get one domain name order, if the sidebar shows it as pending or with a problem. process lists the registry attempts and, when available, the live state of the registry process with transfer details. API keys need domains.view.
API key OK Needs domains.order.cancel.
Description: Cancel a pending domain name order (Registration or Transfer). Eligible statuses: awaiting_required_info and transfer_failed. Users can cancel their own orders, admins any order; a paid order is refunded to the owner's wallet with a credit invoice. API keys need domains.order.cancel.
{
"id": 829,
"status": {
"status": "cancelled"
}
}API key OK Needs domains.email.spam_filter.view.
Description: Get the incoming spam filter setting. Requires domains.email.spam_filter.view. Returns preset, enabled, status (applied, updating, failed, unknown or unavailable), can_change and a message that explains the status. While status is updating, read it again later.
API key OK Needs domains.view.
Description: Get all domain names of the current user, with owner, extension, status, plan details (only your own plan) and is_premium (true for a premium domain name). Supports searching domain names and extensions (see search). API keys need domains.view.
API key OK Needs domains.view.
Description: List your domain names that were transferred to another provider, last transfer first: domain_name, extension, expiry_date and transfer_date. API keys need domains.view.
No login needed
Description: Check whether a domain name can be registered. Returns available, a reason when it is not, and premium: true for a premium domain name (get its price with GET domain_names/premium_quote).
API key OK Needs domains.view.
Description: Get one domain name with DNS records (when DNS control is on), tags, incoming_spam_filter, plan (only your own plan) and holder_validation (see POST domain_names/{id}/resend_validation). holder_change is the running holder change, or the last one if it failed or was cancelled and was not dismissed; the holder of another user is not named. move_request is an open move to another user, or null. API keys need domains.view.
API key OK Needs domains.view.
Description: Get the log book entries for a domain. Only the domain owner or an admin can view the logs. API keys need domains.view.
[
{
"id": 123,
"created_at": "2026-06-18 10:30:00",
"action_name": "ENABLE_DNS_CONTROL"
}
]API key OK Needs domains.dnssec.view.
Description: Get the DNSSEC keys of a domain name as the registry has them. With DNS control on you turn DNSSEC on or off (PATCH dnssec/status); with DNS control off you set the keys yourself (PATCH dnssec/keys); can_toggle and can_manage_keys say which is possible now. Send dnssec_hash back as expected_dnssec_hash when you change DNSSEC: if the keys changed since you read them, the change is refused. API keys need domains.dnssec.view.
API key OK Needs domains.order.create (and contacts.required_info for required_info.
Description: Register a domain name: the shopping cart's checks and price, paid from your wallet and put on your monthly invoice (Via API). Nothing is charged when a check fails; dry_run only prices, and a retry with the same Idempotency-Key is never charged twice. ORDER_003 contact_required_info lists holder details needed before the order: send them as required_info. API keys need domains.order.create (and contacts.required_info for required_info).
{
"domain_name": "example.nl",
"order_period": 1,
"dry_run": false
}{
"order_id": 5925,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22455,
"status": "unprocessed",
"product": "Registration",
"domain_name": "example.nl",
"order_period": 1,
"years": 1,
"premium": false,
"contact_id": 3665,
"name_servers": null,
"price_excluding_vat_in_cents": 469
}
],
"amount_excluding_vat_in_cents": 469,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 98,
"total_including_vat_in_cents": 567,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1600,
"wallet_transaction_id": 4300,
"wallet_balance_in_cents": 9433
}
}API key OK Needs domains.order.create (and contacts.required_info for required_info.
Description: Transfer a domain name to us: the shopping cart's checks and price, paid from your wallet and put on your monthly invoice (Via API). Nothing is charged when a check fails; dry_run only prices, and a retry with the same Idempotency-Key is never charged twice. ORDER_003 contact_required_info lists holder details needed before the order: send them as required_info. API keys need domains.order.create (and contacts.required_info for required_info).
{
"domain_name": "example.eu",
"auth_key": "Xy7-pQ2-9tR",
"order_period": 1
}{
"order_id": 5925,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22455,
"status": "unprocessed",
"product": "Transfer",
"domain_name": "example.eu",
"order_period": 1,
"years": 1,
"premium": false,
"contact_id": 3665,
"name_servers": null,
"price_excluding_vat_in_cents": 469
}
],
"amount_excluding_vat_in_cents": 469,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 98,
"total_including_vat_in_cents": 567,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1600,
"wallet_transaction_id": 4300,
"wallet_balance_in_cents": 9433
}
}API key OK Needs domains.order.create.
Description: Renew one of your active domain names for order_period terms, with the same checks and price as the shopping cart. Paid from your wallet; the line goes on your monthly invoice, marked Via API. Nothing is charged when a check fails or the balance is too low; dry_run returns the price only, and a retry with the same Idempotency-Key header is never charged twice. API keys need domains.order.create.
{
"order_period": 1,
"expected_price": 639
}{
"order_id": 5925,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22455,
"status": "unprocessed",
"product": "Renewal",
"domain_name": "example.nl",
"order_period": 1,
"years": 1,
"premium": false,
"domain_name_id": 6731,
"price_excluding_vat_in_cents": 469
}
],
"amount_excluding_vat_in_cents": 469,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 98,
"total_including_vat_in_cents": 567,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1600,
"wallet_transaction_id": 4300,
"wallet_balance_in_cents": 9433
}
}API key OK Needs domains.order.create.
Description: Restore one of your expired domain names within its restore period, with the same checks and price as the shopping cart. Paid from your wallet; the line goes on your monthly invoice, marked Via API. Nothing is charged when a check fails or the balance is too low; dry_run returns the price only, and a retry with the same Idempotency-Key header is never charged twice. API keys need domains.order.create.
{
"order_period": 1,
"dry_run": true
}{
"order_id": 5925,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22455,
"status": "unprocessed",
"product": "Restore",
"domain_name": "example.nl",
"order_period": 1,
"years": 1,
"premium": false,
"domain_name_id": 6731,
"price_excluding_vat_in_cents": 469
}
],
"amount_excluding_vat_in_cents": 469,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 98,
"total_including_vat_in_cents": 567,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1600,
"wallet_transaction_id": 4300,
"wallet_balance_in_cents": 9433
}
}No login needed
Description: Convert a Unicode domain label or full domain name into ASCII punycode (UTS46 non-transitional mode). Example: "münchen" -> "xn--mnchen-3ya". If input contains a dot, TLD is extracted from input (first-pass) for IDN policy checks. language_codes is returned only when the extracted TLD matches domain_top_level and idn_language_codes contains a non-empty list.
No login needed
Description: Convert an ASCII punycode domain name to Unicode. Input must start with "xn--", contain a dot, and use a TLD that exists in domain_top_level. Example: "xn--mnchen-3ya.com" -> "münchen.com".
API key OK Needs domains.holder_validation.resend.
Description: Ask the registry to send the confirmation e-mail to the domain holder again, for a domain name with registry status PENDING_VALIDATION. Possible once per 10 minutes per domain name. Returns the same holder_validation object as GET domain_names/{id}: email is the address it goes to, next_possible_at says when you can send it again. API keys need domains.holder_validation.resend.
{
"pending": true,
"email": "holder@example.com",
"last_sent_at": "2026-11-03T15:52:00+00:00",
"next_possible_at": "2026-11-03T16:02:00+00:00",
"can_resend": false
}API key OK Needs domains.email.spam_filter.manage.
Description: Change the incoming spam filter setting of the domain name; a preset other than default needs active email hosting. The change is applied in the background: the response (HTTP 202) has the same fields as GET with status updating, and a non-default preset also waits until mail routing for the domain name is set up and verified. Read GET until status is applied. API keys need domains.email.spam_filter.manage.
{
"preset": "more_strict"
}API key OK Needs domains.plan.manage and domains.view.
Description: Link an active domain name to an active all-in-one plan; both must be yours unless you are an admin. The plan's domain limit counts registered and external domain names together. Returns the same domain object as GET /domain_names/{id}. API keys need domains.plan.manage and domains.view.
API key OK Needs domains.plan.manage.
Description: Unlink a registered domain name from its all-in-one plan. Email and website builder must be disabled first; active webhosting does not block unlinking. Returns the same domain payload shape as GET /domain_names/{id}. Requires API key permissions: domains.plan.manage and domains.view.
API key OK Needs domains.dns.modify.
Description: Replace the DNS records of an active domain name with DNS control on; records you leave out are deleted (the root NS and SOA records stay). Record names must be the domain name or a subdomain of it. NS and CNAME records are not allowed at the root, and a CNAME cannot share its name with other records. API keys need domains.dns.modify.
{
"dns_records": [
{
"name": "www.example.com.",
"type": "A",
"ttl": 3600,
"value": "192.0.2.1"
},
{
"name": "example.com.",
"type": "MX",
"ttl": 3600,
"value": "10 mail.example.com."
}
]
}API key OK Needs domains.dnssec.modify.
Description: Replace the DNSSEC keys of an active domain name that does not use our DNS (DNS control off). Send the complete set: keys you leave out are removed, and an empty array turns DNSSEC off. Returns the same DNSSEC state as GET, where allowed_dnssec_records and dnssec_algorithms show how many keys and which algorithms the extension accepts. API keys need domains.dnssec.modify.
API key OK Needs domains.dnssec.modify.
Description: Turn DNSSEC on or off for an active domain name that uses our DNS (DNS control on). Turning it on creates the keys and sends them to the registry; turning it off removes them. Returns the same DNSSEC state as GET. API keys need domains.dnssec.modify.
API key OK Needs domains.dns.control and domains.view.
Description: Turn DNS control on or off. Turning it on (active domain names only) points the domain name to our nameservers with a new DNS zone of default records, plus DNSSEC where the extension supports it; turning it off removes DNSSEC, the DNS zone and the domain redirections. Returns the same domain object as GET /domain_names/{id}. API keys need domains.dns.control and domains.view.
API key OK Needs domains.dns.control and domains.view.
Description: Set the nameservers of an active domain name, with glue records for nameservers that have ips. Advanced settings are turned on, and if DNS control is on it is turned off: the DNS zone and DNSSEC are removed. Returns the same domain object as GET /domain_names/{id}. API keys need domains.dns.control and domains.view.
{
"domain_name_server_settings": {
"name_servers": [
{
"name": "ns1.example.com",
"ips": ""
},
{
"name": "ns2.example.com",
"ips": ""
}
]
}
}API key OK Needs domains.dns.control and domains.view.
Description: Turn access to advanced settings on or off for an active domain name. Turning it off also turns DNS control on if needed, unlinks the DNS template and repairs the DNS records of linked services. Returns the same domain object as GET /domain_names/{id}. API keys need domains.dns.control and domains.view.
API key OK Needs domains.email.spam_filter.view.
Description: Get the incoming spam filter setting. Requires domains.email.spam_filter.view. Returns preset, enabled, status (applied, updating, failed, unknown or unavailable), can_change and a message that explains the status. While status is updating, read it again later.
API key OK Needs domains.view.
Description: Get all external domain names for the current user. Returns an array of brief external domain objects with linked plan (only your own plan) and mail server information where available. API keys need domains.view.
[
{
"id": 123,
"name": "example.com",
"created_at": "2026-06-30 12:00:00",
"dns_control_enabled": 1,
"access_to_advanced_settings": true,
"added_to_incoming_spam_filter": 0,
"is_email_enabled": true,
"plan": {
"id": 456,
"created_at": "2026-06-30 12:00:00",
"expires_at": "2027-06-30 12:00:00",
"status": "active",
"plan_info": {
"id": 9,
"name": "Plan name",
"type": "webhosting"
}
},
"mail_server": {
"id": 7,
"host_name": "mail.example.com",
"ip_v4_address": "192.0.2.10",
"ip_v6_address": "2001:db8::10"
}
}
]API key OK Needs domains.view.
Description: Get one external domain name with its plan (only your own plan), mail server, DNS records (when DNS control is on), redirections, email accounts and outgoing email block status. dns_records_check says whether the DNS records for the website, website builder, email and redirections are set correctly, and lists the missing ones. incoming_spam_filter is included when email is enabled. API keys need domains.view.
API key OK Needs domains.create.
Description: Add a domain name that is registered elsewhere to your account. It starts with DNS control off and without a plan; use update_dns_control and assign_to_plan to change that. Returns the new external domain name (HTTP 201). API keys need domains.create.
API key OK Needs domains.email.spam_filter.manage.
Description: Change the incoming spam filter setting of the domain name; a preset other than default needs active email hosting. The change is applied in the background: the response (HTTP 202) has the same fields as GET with status updating, and a non-default preset also waits until mail routing for the domain name is set up and verified. Read GET until status is applied. API keys need domains.email.spam_filter.manage.
{
"preset": "more_strict"
}API key OK Needs domains.plan.manage and domains.view.
Description: Link an external domain name to an active all-in-one plan; both must be yours unless you are an admin. The plan's domain limit counts registered and external domain names together. Returns the same object as GET /external_domain_names/{id}. API keys need domains.plan.manage and domains.view.
API key OK Needs domains.plan.manage.
Description: Unlink an external domain name from its all-in-one plan. Email and website builder must be disabled first; active webhosting does not block unlinking. Returns the same external-domain payload shape as GET /external_domain_names/{id}. Requires API key permissions: domains.plan.manage and domains.view.
API key OK Needs domains.dns.control and domains.view.
Description: Turn DNS control on or off. Turning it on creates a new DNS zone with our default records and nameservers; turning it off deletes the DNS zone and its records. Returns the same object as GET /external_domain_names/{id}. API keys need domains.dns.control and domains.view.
API key OK Needs domains.dns.control.
Description: Enable or disable access to advanced settings for an external domain. Disabling ensures external DNS control is enabled, repairs DNS records for linked services, and returns the same external-domain payload shape as GET /external_domain_names/{id}. Requires API key permissions: domains.dns.control and domains.view.
API key OK Needs domains.dns.modify.
Description: Replace the DNS records of an external domain name with DNS control on; records you leave out are deleted (the root NS and SOA records stay). Record names must be the domain name or a subdomain of it. NS and CNAME records are not allowed at the root, and a CNAME cannot share its name with other records. API keys need domains.dns.modify.
API key OK Needs domains.email.sender_rules.view.
Description: Get the allowed and blocked senders of the domain name, or of one address (scope); an address rule overrides the domain rule for the same sender. status is updating until the last change is live, then applied, or failed (send action retry). can_manage says whether you can change the rules now, and limit shows how full the list is. API keys need domains.email.sender_rules.view.
API key OK Needs domains.email.quarantine.view.
Description: List the mail held in quarantine for the domain name, newest first; only spam can be released or deleted (can_release). complete is false when part of it could not be read, limited true when there was too much to read (filter on recipient or reason). sender_gateway.state review: sender rules cannot be changed; failed_actions: queued releases and deletes of the last hour that failed. API keys need domains.email.quarantine.view.
API key OK Needs domains.email.quarantine.content.
Description: Get one held message with a plain-text preview of its body (text), without HTML, images or attachments. preview_truncated is true when the text was cut short. Messages held for a virus or attachment have no preview: text is null and security_review_required is true. API keys need domains.email.quarantine.content.
API key OK Needs domains.email.quarantine_reports.view.
Description: Get the quarantine report schedule and mailbox for the domain name or one address (scope). For an address, inherit means it follows the domain and effective shows what applies; with grouping domain (one report for all addresses) address settings are not used. destination_valid is false when the chosen mailbox can no longer receive reports; none are sent until you pick another. API keys need domains.email.quarantine_reports.view.
API key OK Needs domains.email.quarantine_reports.view.
Description: Search the mailboxes that can receive quarantine reports: active mailboxes on domain names with email hosting in the same account. Forwarders and catch-all addresses are not included. Returns up to 100 per page; next_after is null on the last page. API keys need domains.email.quarantine_reports.view.
API key OK Needs domains.email.sender_rules.view.
Description: Get the allowed and blocked senders of the domain name, or of one address (scope); an address rule overrides the domain rule for the same sender. status is updating until the last change is live, then applied, or failed (send action retry). can_manage says whether you can change the rules now, and limit shows how full the list is. API keys need domains.email.sender_rules.view.
API key OK Needs domains.email.quarantine.view.
Description: List the mail held in quarantine for the domain name, newest first; only spam can be released or deleted (can_release). complete is false when part of it could not be read, limited true when there was too much to read (filter on recipient or reason). sender_gateway.state review: sender rules cannot be changed; failed_actions: queued releases and deletes of the last hour that failed. API keys need domains.email.quarantine.view.
API key OK Needs domains.email.quarantine.content.
Description: Get one held message with a plain-text preview of its body (text), without HTML, images or attachments. preview_truncated is true when the text was cut short. Messages held for a virus or attachment have no preview: text is null and security_review_required is true. API keys need domains.email.quarantine.content.
API key OK Needs domains.email.quarantine_reports.view.
Description: Get the quarantine report schedule and mailbox for the domain name or one address (scope). For an address, inherit means it follows the domain and effective shows what applies; with grouping domain (one report for all addresses) address settings are not used. destination_valid is false when the chosen mailbox can no longer receive reports; none are sent until you pick another. API keys need domains.email.quarantine_reports.view.
API key OK Needs domains.email.quarantine_reports.view.
Description: Search the mailboxes that can receive quarantine reports: active mailboxes on domain names with email hosting in the same account. Forwarders and catch-all addresses are not included. Returns up to 100 per page; next_after is null on the last page. API keys need domains.email.quarantine_reports.view.
API key OK Needs domains.email.sender_rules.manage.
Description: Allow, block or remove one sender for the domain name or one of its addresses (scope); an address rule overrides the domain rule for the same sender. Returns the rules as GET does, with status updating until the change is live. If an earlier change is still running, yours is queued and you get the same 200 answer; an out-of-date version is refused first. API keys need domains.email.sender_rules.manage.
API key OK Needs domains.email.quarantine.release to release, or domains.email.quarantine.delete to delete.
Description: Release or delete held spam and get a status per message: release_requested, deleted, failed (not changed; act again with a new request_key) or unknown (the gateway may have acted; contact support). If no message was changed you get 409 and can send it again. While another action runs, yours is queued (200, status queued). API keys need domains.email.quarantine.release to release, or domains.email.quarantine.delete to delete.
API key OK Needs domains.email.quarantine_reports.manage.
Description: Set the quarantine report schedule and mailbox for the domain name or one address (scope). An address setting overrides the domain; send inherit for both frequency and destination_id to remove it, the only address change allowed with grouping domain. Returns the settings as GET does; if they are busy, your change is queued and shown as saved (200); an out-of-date version is refused first. API keys need domains.email.quarantine_reports.manage.
API key OK Needs domains.email.sender_rules.manage.
Description: Allow, block or remove one sender for the domain name or one of its addresses (scope); an address rule overrides the domain rule for the same sender. Returns the rules as GET does, with status updating until the change is live. If an earlier change is still running, yours is queued and you get the same 200 answer; an out-of-date version is refused first. API keys need domains.email.sender_rules.manage.
API key OK Needs domains.email.quarantine.release to release, or domains.email.quarantine.delete to delete.
Description: Release or delete held spam and get a status per message: release_requested, deleted, failed (not changed; act again with a new request_key) or unknown (the gateway may have acted; contact support). If no message was changed you get 409 and can send it again. While another action runs, yours is queued (200, status queued). API keys need domains.email.quarantine.release to release, or domains.email.quarantine.delete to delete.
API key OK Needs domains.email.quarantine_reports.manage.
Description: Set the quarantine report schedule and mailbox for the domain name or one address (scope). An address setting overrides the domain; send inherit for both frequency and destination_id to remove it, the only address change allowed with grouping domain. Returns the settings as GET does; if they are busy, your change is queued and shown as saved (200); an out-of-date version is refused first. API keys need domains.email.quarantine_reports.manage.
API key OK Each MCP tool needs its own permission.
Description: MCP (Model Context Protocol) endpoint for supplier, domain, invoice, and translation management. Same permission requirements as POST method.
API key OK Each MCP tool needs its own permission.
Description: MCP (Model Context Protocol) endpoint for supplier, domain, invoice, and translation management. API-key authenticated MCP tool calls require the corresponding mcp_tools permission. Direct API endpoint calls use api_endpoints permissions.
getOwnedCompanies: Retrieve list of owned companiesgetSuppliers: Get supplier informationgetSupplierInvoices: View supplier invoicesgetSupplierCategories: Get supplier category listcreateSupplier: Create new suppliergetCountries: Get countries listgetCurrentWallet: Get current walletupdateSupplierInvoice: Update supplier invoice (admin only)deleteSupplierInvoice: Delete supplier invoice (admin only)invoices.read: View and download regular and monthly invoicesmonthly_invoicing.update: Update monthly invoicing preferencegetDomainNames: Get list of registered domain namesgetDomainNameOrders: Get concise list of pending or problem domain name ordersgetExternalDomainNames: Get list of external domain names (legacy alias permission for getDomainNames with domain_kind=external)createExternalDomainName: Create an external domain name recordgetDomainName: Get detailed information for one domain and inspect domain order, request, registration, or transfer statuscancelDomainNameOrder: Cancel an owned eligible domain name order. Supported products: Registration or Transfer. Eligible statuses: awaiting_required_info and transfer_faileddomains.plan.manage: Link or unlink registered and external domains to plans through MCPupdateDomainDnsRecords: Update domain DNS recordsupdateDomainDnsControl: Enable or disable domain DNS controlgetDomainDnssec: View registered-domain DNSSEC state and registrar keysupdateDomainDnssecKeys: Replace manually managed registered-domain DNSSEC keysupdateDomainDnssecStatus: Enable or disable platform-managed DNSSECresendDomainHolderValidation: Resend the domain holder confirmation e-mail of a domain name waiting for holder validationupdateDomainAdvancedSettings: Enable or disable domain advanced settingsupdateDomainNameServers: Update domain name serversgetDomainNameLogs: Get domain log book entriesdomains.email.manage: Create and update domain email addresses through MCPdomains.email.delete: Delete domain email addresses through MCPdomains.email.sync: Start, list and view domain email sync tasks through MCPdomains.email.spam_filter.view: Read incoming spam sensitivity using getDomainIncomingSpamFilter; returns preset, enabled, status, can_change and a plain English messagedomains.email.spam_filter.manage: Change incoming spam sensitivity using updateDomainIncomingSpamFilter; poll getDomainIncomingSpamFilter with the view permission while status is updating. Only applied confirms success; unknown needs a later refresh, and failed or unavailable includes an explanationgetTranslationsWithoutAiInstructions: Get translations without AI instructions (admin only)getTranslationsWithoutTranslations: Get translations without translations (admin only)createTranslation: Create translation (admin only)updateTranslation: Update translation (admin only)deleteTranslation: Delete translation (admin only)API key OK Needs domains.order.create or plans.order.create.
Description: Get one of your orders (from the API or the shopping cart) with the status of each line: unprocessed, processing, processed, awaiting_required_info, transfer_failed, failed or cancelled. sent_to_processing is false while an API order waits to be sent to processing (at most about a minute). API keys need domains.order.create or plans.order.create.
{
"order_id": 5925,
"order_status": "processed",
"created_at": "2026-11-13T17:05:00+00:00",
"source": "api",
"sent_to_processing": true,
"items": [
{
"id": 22455,
"product": "Registration",
"status": "processed",
"price_excluding_vat_in_cents": 469,
"order_period": 1,
"domain_name": "example.nl",
"domain_name_id": 13310
}
],
"payment": {
"method": "site_wallet",
"status": "paid",
"total_including_vat_in_cents": 567
},
"invoice": {
"type": "monthly_invoice",
"monthly_invoice_id": 1600,
"invoice_id": null
}
}API key OK Needs domains.view.
Description: Get all all-in-one plans for the current user. Returns an array of plan objects with full details including plan specifications (CPU, RAM, disk, bandwidth), associated domain names, webhosting accounts, and available upgrade options. API keys need domains.view.
API key OK Needs domains.view.
Description: Get one all-in-one plan by ID with its specifications, linked domain names, hosting accounts, upgrade options and usage. Usage covers storage, this month's hosting bandwidth, the number of domain names and the number of email addresses. Each metric has used, limit (null means unlimited), unit, status (ready, partial or unavailable) and observed_at; partial values are lower bounds.
API key OK Needs domains.view.
Description: Website security of the plan's hosting account from the nightly scan: hacked websites, security holes and outdated software per website, and the email report settings. status is ready, not_scanned or unavailable. care is the website care offer: available, currency, prices in cents excluding VAT, months, protected_until and the product_id to order it with. API keys need domains.view.
API key OK Needs plans.order.create.
Description: Order a new plan, optionally with domain names you already have, with the same checks and price as the shopping cart. Paid from your wallet; the line goes on your monthly invoice, marked Via API. Nothing is charged when a check fails or the balance is too low; dry_run returns the price only, and a retry with the same Idempotency-Key header is never charged twice. API keys need plans.order.create.
{
"plan_name": "starter",
"order_period": 1,
"domain_name_ids": [
6731
]
}{
"order_id": 5926,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22456,
"status": "unprocessed",
"product": "New all in one plan",
"plan_name": "starter",
"order_period": 1,
"domain_name_ids": [
6731
],
"external_domain_name_ids": [],
"price_excluding_vat_in_cents": 3588
}
],
"amount_excluding_vat_in_cents": 3588,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 753,
"total_including_vat_in_cents": 4341,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1601,
"wallet_transaction_id": 4301,
"wallet_balance_in_cents": 5092
}
}API key OK Needs plans.order.create.
Description: Renew one of your active plans for order_period years, with the same checks and price as the shopping cart. Paid from your wallet; the line goes on your monthly invoice, marked Via API. Nothing is charged when a check fails or the balance is too low; dry_run returns the price only, and a retry with the same Idempotency-Key header is never charged twice. API keys need plans.order.create.
{
"order_period": 1
}{
"order_id": 5926,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22456,
"status": "unprocessed",
"product": "Renew all in one plan",
"plan_id": 91,
"plan_name": "starter",
"order_period": 1,
"price_excluding_vat_in_cents": 3588
}
],
"amount_excluding_vat_in_cents": 3588,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 753,
"total_including_vat_in_cents": 4341,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1601,
"wallet_transaction_id": 4301,
"wallet_balance_in_cents": 5092
}
}API key OK Needs plans.order.create.
Description: Restore one of your expired or cancelled plans within 14 days after it expired, with the same checks and price as the shopping cart. Paid from your wallet; the line goes on your monthly invoice, marked Via API. Nothing is charged when a check fails or the balance is too low; dry_run returns the price only, and a retry with the same Idempotency-Key header is never charged twice. API keys need plans.order.create.
{
"order_period": 1,
"dry_run": true
}{
"order_id": 5926,
"order_status": "paid",
"dry_run": false,
"currency": "EUR",
"items": [
{
"id": 22456,
"status": "unprocessed",
"product": "Restore all in one plan",
"plan_id": 91,
"plan_name": "starter",
"order_period": 1,
"price_excluding_vat_in_cents": 3588
}
],
"amount_excluding_vat_in_cents": 3588,
"transaction_cost_in_cents": 0,
"vat_percentage": 21,
"vat_amount_in_cents": 753,
"total_including_vat_in_cents": 4341,
"payment": {
"type": "monthly_invoice",
"monthly_invoice_id": 1601,
"wallet_transaction_id": 4301,
"wallet_balance_in_cents": 5092
}
}API key OK Needs domains.plan.manage.
Description: Change how often the account holder gets the website security emails of the plan's hosting account. Send one or more settings; the others keep their value. Daily emails and reports are sent at 08:00 Europe/Amsterdam, weekly ones on Monday. API keys need domains.plan.manage.
{
"vulnerabilities": "daily",
"outdated": "monthly"
}API key OK No permission needed.
Description: Download a proforma invoice (PDF) of the current shopping cart (shopping-cart-key cookie) of the logged-in user: products, prices and VAT, marked as not paid, with a payment link and bank transfer details. The bank reference is that of a pending bank transfer payment of this cart (POST /api/payments); without one: PROFORMA_001. Creates no invoice, payment or order. Needs billing details on the cart.
No login needed
Description: Get all top-level domains with pricing information and related TLD recommendations
No login needed
Description: Get a specific top-level domain by ID, including related TLD recommendations
API key OK Needs contacts.required_info.
Description: Check which extra details a contact needs to register domain names: send contact_id and tld, or nothing to check the domain names in your shopping cart. Lists the mandatory and optional fields still missing; an empty list means nothing is needed. An item has contact_roles when a role needs another contact than the holder. API keys need contacts.required_info.
API key OK Needs invoices.read.
Description: List your invoices, newest first. API keys need invoices.read.
[
{
"id": 472,
"payment": 652,
"vat_percentage": 21,
"amount_excluding_vat_in_cents": 9398,
"vat_in_cents": 1974,
"total_including_vat_in_cents": 11372,
"creation_date": "2026-06-18T12:16:26+02:00",
"has_pdf": true,
"pdf_download_url": "/v2/users/invoices/472/pdf",
"currency": {
"id": 1,
"name": "EUR",
"symbol": "€"
}
}
]API key OK Needs invoices.read.
Description: Get one invoice with its invoice lines. Admins logged in with a session can add user_id to get another customer's invoice. API keys need invoices.read.
{
"id": 472,
"payment": 652,
"vat_percentage": 21,
"amount_excluding_vat_in_cents": 9398,
"vat_in_cents": 1974,
"total_including_vat_in_cents": 11372,
"creation_date": "2026-06-18T12:16:26+02:00",
"pdf_download_url": "/v2/users/invoices/472/pdf",
"currency": {
"id": 1,
"name": "EUR",
"symbol": "€"
},
"invoice_lines": [
{
"id": 683,
"price_excluding_vat": 9369,
"information": {
"domain_name": "example.jobs"
}
}
]
}API key OK Needs invoices.read.
Description: Download the PDF of an invoice. Admins logged in with a session can add user_id to get another customer's invoice. API keys need invoices.read.
API key OK Needs invoices.read.
Description: List your pending monthly invoices (not yet turned into an invoice), grouped per invoice buyer with totals. Pages count buyer groups. API keys need invoices.read.
[
{
"buyer": {
"id": 1,
"first_name": "Reshad",
"last_name": "Bashir",
"email": "reshad@example.com",
"country": "NL"
},
"monthly_invoices": [
{
"id": 1,
"payment": 652,
"vat_percentage": 21,
"amount_excluding_vat_in_cents": 5988,
"vat_in_cents": 1257,
"total_including_vat_in_cents": 7245,
"creation_date": "2026-06-08T10:46:37+02:00",
"currency": {
"id": 1,
"name": "EUR",
"symbol": "€"
},
"invoice_lines": [
{
"id": 1,
"price_excluding_vat": 5988,
"information": {
"created_at": "08-06-2026"
}
}
]
}
],
"amount_excluding_vat_in_cents": 5988,
"vat_in_cents": 1257,
"total_including_vat_in_cents": 7245,
"pdf_download_url": "/v2/users/monthly_invoices/buyers/1/pdf"
}
]API key OK Needs invoices.read.
Description: Download a PDF preview of all pending monthly invoices of one invoice buyer (buyer.id from GET users/monthly_invoices). Admins logged in with a session can add user_id to get another customer's PDF. API keys need invoices.read.
API key OK Needs invoices.read.
Description: Get one pending monthly invoice. Admins logged in with a session can add user_id to get another customer's invoice. API keys need invoices.read.
{
"id": 1,
"payment": 652,
"vat_percentage": 21,
"amount_excluding_vat_in_cents": 5988,
"vat_in_cents": 1257,
"total_including_vat_in_cents": 7245,
"creation_date": "2026-06-08T10:46:37+02:00",
"currency": {
"id": 1,
"name": "EUR",
"symbol": "€"
},
"invoice_buyer": {
"id": 1,
"first_name": "Reshad",
"last_name": "Bashir",
"email": "reshad@example.com"
},
"metadata": [],
"invoice_lines": [
{
"id": 1,
"price_excluding_vat": 5988,
"information": {
"created_at": "08-06-2026"
}
}
],
"pdf_download_url": "/v2/users/monthly_invoices/buyers/1/pdf"
}API key OK Needs monthly_invoicing.update.
Description: Enable or disable monthly invoicing for the current user. Admins can update users on the current application host. API keys need monthly_invoicing.update.
{
"user_id": 63,
"email": "user@example.com",
"monthly_invoicing": true
}