# POST /api/v1/dns/zone/records/bulk

> Apply a bulk DNS change

- Group: dns
- Tier: W
- Required scope: write:dns
- Docs: https://api.inleed.com/reference/dns/bulk-dns-records

## Description

Validates every record in `records[]` (each `{action:add|delete, type, name, value, ttl?, priority?}`), then applies them in order and reports each outcome. For a single record use the per-record tools.

## Body

- `input` — string (required). A domain, email address, website URL, or Inleed service id — for example example.se, info@example.se or 42976. Resolved to the owning account automatically, and the resolved target is echoed back in the response.
- `records` — object[] (required)
  - `action` — enum (required). One of add, delete.
  - `type` — string (required)
  - `name` — string (required)
  - `value` — string (required)
  - `ttl` — string
  - `priority` — integer. Range 0–65535.

## Request

```bash
curl -X POST "https://mcp.inleed.com/api/v1/dns/zone/records/bulk" \
  -H "Authorization: Bearer inl_live_…" \
  -H "Content-Type: application/json" \
  -d '{"input":"example.se","records":[{"action":"add","type":"A","name":"example.se","value":"203.0.113.10","ttl":"3600","priority":3}]}'
```

## Response · 200

```json
{
  "target": {
    "input": "example.se",
    "kind": "domain",
    "domain": null,
    "mailbox": null,
    "serviceId": 90714,
    "domainServiceId": null,
    "daUsername": "inleed42",
    "node": "web12",
    "userId": 4821,
    "note": null
  },
  "domain": "example.se",
  "results": "example.se",
  "applied": 1,
  "changes": {
    "bulk": 1
  }
}
```

## Errors

- **400**  — codes: invalid_request
- **401** No token was presented, or the token is revoked, expired or unknown. — codes: unauthorized, token_expired, token_revoked
- **403** The token lacks a required scope, or this account does not own the resource. — codes: insufficient_scope, domain_not_owned
- **404** No such resource for this account. — codes: not_found
- **422** Validation error — codes: validation_failed
- **429** The rate limit for this token is exhausted. See `Retry-After`. — codes: rate_limited
- **500** Something went wrong on our side. The failure is logged against `requestId`. — codes: internal_error

## Related

- GET /api/v1/dns/zone — https://api.inleed.com/reference/dns/get-dns-zone
- GET /api/v1/dns/zone/export — https://api.inleed.com/reference/dns/export-dns-zone
- GET /api/v1/dns/zone/lint — https://api.inleed.com/reference/dns/lint-dns-zone
- GET /api/v1/dns/zone/mx-templates — https://api.inleed.com/reference/dns/list-mx-templates

