/api/v2/audit-log Return recent audit events for the authenticated account.
The response keeps the raw endpoint/method fields for forensics, but also includes API-composed summary, category, action, resourceLabel, and changes fields so clients do not have to interpret route names or request bodies.
By default the list also merges dedicated DNS change-history events, which provide concrete before/after DNS record and nameserver changes.
Use hideGet=true to filter out read-only GET events and focus on changes.
audit:read
Authenticate with an API key in the Authorization: Bearer <token> header.
limit integer · min: 1 · max: 100 · default: 50 Page size from 1 to 100. Defaults to 50. Values outside this range are rejected with 400 invalid_request.
cursor string Opaque cursor from nextCursor for the next page.
startAt string Inclusive ISO-8601 lower bound. Defaults to the last 12 hours.
endAt string Inclusive ISO-8601 upper bound.
severity string Filter to events with this exact severity, for example info, warning, error, or critical. DNS change-history events always have info severity, so any other value excludes them.
method string Filter to events with this exact HTTP method (case-insensitive). When set, hideGet is ignored. DNS change-history events match the method of the equivalent API call (POST for creations, imports, and nameserver changes; PUT for updates and zone replacements; DELETE for deletions), so filtering on GET excludes them.
endpoint string Case-insensitive substring filter on the event endpoint path. For DNS change-history events the filter also matches the domain name and event summary.
hideGet boolean · default: false Exclude read-only GET events so the list focuses on changes. Ignored when method is set.
includeStats boolean · default: false Include account activity counters in the stats field. Counters are computed from startAt onward and ignore endAt and the other filters.
includeDnsEvents boolean · default: true Include dedicated DNS change-history events with before/after DNS values. Defaults to true.
Authorization Bearer <token> Accept application/json data array<object> required data[].id string required data[].occurredAt string required data[].method string required data[].endpoint string required data[].path string required data[].ipAddress string · nullable Nullable: may be null when not applicable.
data[].userAgent string · nullable Nullable: may be null when not applicable.
data[].statusCode integer · nullable Nullable: may be null when not applicable.
data[].success boolean required data[].durationMs integer · nullable Nullable: may be null when not applicable.
data[].errorMessage string · nullable Nullable: may be null when not applicable.
data[].authMethod string · nullable Nullable: may be null when not applicable.
data[].resourcesAccessed array<string> required data[].severity string required data[].tags array<string> required data[].eventSource string · enum required request_audit dns_history data[].actorType string · nullable · enum Nullable: may be null when not applicable.
customer staff system api smartcopy data[].actorId string · nullable Nullable: may be null when not applicable.
data[].requestId string · nullable Nullable: may be null when not applicable.
data[].category string · enum required dns domain security billing api account data[].action string required data[].summary string required data[].resourceLabel string · nullable Nullable: may be null when not applicable.
data[].changes array<object> required data[].changes[].label string required data[].changes[].before string · nullable required Nullable: may be null when not applicable.
data[].changes[].after string · nullable required Nullable: may be null when not applicable.
total integer required hasMore boolean required nextCursor string · nullable required stats object Account activity counters, present only when includeStats=true. Counters cover events from startAt onward; endAt and the other filters are not applied. totalEvents includes DNS change-history events; the remaining counters cover API request log entries only.
stats.totalEvents integer required stats.failedLogins integer required stats.apiCalls integer required stats.securityEvents integer required stats.avgResponseTimeMs integer required stats.topEndpoints array<object> required stats.topEndpoints[].endpoint string required stats.topEndpoints[].count integer required stats.recentActivity array<object> required stats.recentActivity[].date string required stats.recentActivity[].count integer 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 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/audit-log curl -X GET "https://cloud.hostup.se/api/v2/audit-log" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"data": [
{
"id": "b95de54b-2d8d-45f1-96b9-2d2e5a3c02fb",
"occurredAt": "2026-05-19T09:55:00.000Z",
"method": "PUT",
"endpoint": "/api/v2/dns-zones/zone_01hxa3b4c5d6e7f8g9h0j1k2m3/records/drr_01hxa3b4c5d6e7f8g9h0j1k2m4",
"path": "/api/v2/dns-zones/zone_01hxa3b4c5d6e7f8g9h0j1k2m3/records/drr_01hxa3b4c5d6e7f8g9h0j1k2m4",
"ipAddress": "203.0.113.25",
"userAgent": "Mozilla/5.0",
"statusCode": 200,
"success": true,
"durationMs": 214,
"errorMessage": null,
"authMethod": "session",
"resourcesAccessed": [
"v2_dns_zone:zone_01hxa3b4c5d6e7f8g9h0j1k2m3:record_update"
],
"severity": "info",
"tags": [
"v2_dns_record_update"
],
"eventSource": "request_audit",
"actorType": null,
"actorId": null,
"category": "dns",
"action": "dns_record_update",
"summary": "Changed DNS record A @ -> 203.0.113.10.",
"resourceLabel": "drr_01hxa3b4c5d6e7f8g9h0j1k2m4",
"changes": [
{
"label": "Type",
"before": null,
"after": "A"
},
{
"label": "Name",
"before": null,
"after": "@"
},
{
"label": "Value",
"before": null,
"after": "203.0.113.10"
},
{
"label": "TTL",
"before": null,
"after": "3600"
}
]
}
],
"total": 1,
"hasMore": false,
"nextCursor": null
}