Queue a bulk DNS record operation

Queue an asynchronous DNS record mutation across multiple domain zones. Use action: "add" or "update" with records[]; use action: "delete" with deleteType. The request schema deliberately lists all action fields in one object so API tools see every allowed action value. domainNames are domain names, not…

Read full description Hide full description

Queue an asynchronous DNS record mutation across multiple domain zones. Use action: "add" or "update" with records[]; use action: "delete" with deleteType. The request schema deliberately lists all action fields in one object so API tools see every allowed action value. domainNames are domain names, not public dom_... IDs. The v2 boundary 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}".

Domains & DNS DNS

Authentication

Required API scope: write:dns

Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.

Context

Headers

Accept Example
Content-Type Example

Body

required
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 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

Required when `action` is `add` or `update`. Omit this field for `action: "delete"`.

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`.

Responses

202 Bulk DNS job queued. Poll `operation.pollUrl` for completion.
operation object
operation.status string · enum required · Example: queued
pending
queued
in_progress
completed
failed
operation.jobId string required · Example: job_01hxa3b4c5d6e7f8g9h0j1k2m3
operation.pollUrl string required · Example: /api/jobs/job_01hxa3b4c5d6e7f8g9h0j1k2m3
operation.result objectnull · Example: null
action string · enum
add
update
delete
domainsQueued integernull · Example: 2
400 Invalid request. The response body is an RFC 7807 Problem Details document.
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
401 Unauthorized. Authentication is required.
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
403 Forbidden. The caller lacks a required scope or does not own the resource.
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
404 Not found. The resource does not exist or is not owned by the caller.
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
429 Rate limited. Retry after the limit resets. 429 responses include `Retry-After` seconds plus `X-RateLimit-*` headers.
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
500 Internal error. Retry later or contact support if the issue persists.
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
POST https://cloud.hostup.se/api/v2/domains/bulk/dns
For AI assistants
View as Markdown
cURL
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
      }
    ]
  }'
Response
{
  "operation": {
    "status": "pending",
    "jobId": "dbj_01hxa3b4c5d6e7f8g9h0j1k2m3",
    "pollUrl": "/api/jobs/dbj_01hxa3b4c5d6e7f8g9h0j1k2m3"
  },
  "action": "add",
  "domainsQueued": 2
}
Request Body Add a TXT record to multiple zones
{
  "action": "add",
  "domainNames": [
    "example.se",
    "example.nu"
  ],
  "records": [
    {
      "type": "TXT",
      "name": "_dmarc",
      "value": "v=DMARC1; p=none",
      "ttl": 3600
    }
  ]
}