/api/v2/domains/bulk/dns Queue an asynchronous DNS record mutation across multiple domain zones.
Use action: "add" or "update" with records[]; use action: "delete" with deleteType.
All action fields appear in one request object; send only the fields for your chosen action.
domainNames are domain names, not public dom_... IDs.
The API verifies every submitted domain before queuing; if any domain is not owned by the caller, the entire batch is rejected with Problem Details and errors[] pointers.
Successful responses return a domain bulk job with a public dbj_... ID and pollUrl: "/api/jobs/{jobId}".
write:dns
Authenticate with an API key in the Authorization: Bearer <token> header.
Authorization Bearer <token> Accept application/json Content-Type application/json action string · enum required
· Example: add add and update require records[]. delete requires deleteType and, depending on that value, recordType, recordName, or recordValue.
add update delete domainNames array<string> required
· Example: ["example.se","example.nu"] Domain names to mutate. These are plain domain names such as example.se, not public dom_... IDs.
records array<object> Required when action is add or update. Omit this field for action: "delete".
records[].type string · enum required
· Example: TXT A AAAA CNAME ALIAS MX TXT SRV CAA NS TLSA records[].name string required
· Example: _dmarc Record owner name relative to this DNS zone. Use @ or an empty string for the zone root; use labels such as www or _dmarc, not the full FQDN www.example.com. Responses may return normalized FQDN names. For NS records, send the subdomain label only: in zone xyz.se, name: "acme" delegates acme.xyz.se. This does not change authoritative nameservers for xyz.se; use /api/v2/domains/{id}/nameservers for that.
records[].value string required
· Example: v=DMARC1; p=none; rua=mailto:dmarc@example.com Record target or content. Send TXT values, including SPF/DKIM/DMARC policy values, without surrounding quotes; the server applies DNS-safe quoting and splits long TXT-like values into DNS protocol strings of at most 255 characters. Do not pre-split long TXT values.
records[].ttl integer · min: 60 · max: 86400
· Example: 3600 TTL in seconds, from 60 to 86400. Send as a JSON number; integer-like strings are tolerated for tool adapters.
records[].priority integer · min: 0 · max: 65535
· Example: 10 MX or SRV priority. Send as a JSON number; integer-like strings are tolerated for tool adapters.
records[].weight integer · min: 0 · max: 65535
· Example: 0 records[].port integer · min: 1 · max: 65535
· Example: 443 deleteType string · enum
· Example: by_type Required when action is delete. Use all to delete every record in each zone, by_type with recordType, by_name with recordName, or by_value with recordValue.
all by_type by_name by_value recordType string
· Example: TXT Required when action is delete and deleteType is by_type.
recordName string
· Example: _dmarc Required when action is delete and deleteType is by_name. Record owner name as understood by the DNS record APIs, normally relative to each zone.
recordValue string
· Example: v=DMARC1; p=none Required when action is delete and deleteType is by_value.
operation.pollUrl for completion. 3 fields operation object operation.status string · enum required
· Example: queued Operation status. 202 Accepted responses only carry pending, queued, or in_progress; the terminal completed and failed values appear only in 200 OK responses for operations that finished within the request, or when polling pollUrl.
pending queued in_progress completed failed operation.jobId string required
· Example: job_01hxa3b4c5d6e7f8g9h0j1k2m3 operation.pollUrl string · nullable required
· Example: /api/jobs/job_01hxa3b4c5d6e7f8g9h0j1k2m3 URL to poll for progress while the operation is in flight. null when status is already terminal (completed or failed), so there is nothing left to poll.
action string · enum add update delete domainsQueued integer · nullable
· Example: 2 type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object Retry-After seconds plus X-RateLimit-* headers. 10 fields type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object https://cloud.hostup.se/api/v2/domains/bulk/dns curl -X POST "https://cloud.hostup.se/api/v2/domains/bulk/dns" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"action": "add",
"domainNames": [
"example.se",
"example.nu"
],
"records": [
{
"type": "TXT",
"name": "_dmarc",
"value": "v=DMARC1; p=none",
"ttl": 3600
}
]
}' {
"operation": {
"status": "pending",
"jobId": "dbj_01hxa3b4c5d6e7f8g9h0j1k2m3",
"pollUrl": "/api/jobs/dbj_01hxa3b4c5d6e7f8g9h0j1k2m3"
},
"action": "add",
"domainsQueued": 2
} {
"action": "add",
"domainNames": [
"example.se",
"example.nu"
],
"records": [
{
"type": "TXT",
"name": "_dmarc",
"value": "v=DMARC1; p=none",
"ttl": 3600
}
]
}