Skip to content

List server incidents

GET
/hosts/incidents
curl --request GET \
--url 'https://dev.tunnelhq.com/api/v1/hosts/incidents?host_id=hst_7&state=open' \
--header 'X-API-Key: <X-API-Key>' \
--header 'X-Project-Id: prj_12'

Server incidents of the last 30 days, and every open one, open first, up to 200. One incident can name several servers, when they failed for the same reason at the same time. Any role in the project can call it.

Need an API key? See Getting an API key.

X-Project-Id
required
string

The project, as prj_12 or 12. A workspace key can only reach its own workspace’s projects.

Example
prj_12
host_id
string

Only this server’s incidents. With state=open, only the ones it isn’t back from.

Example
hst_7
state
string
Allowed values: open

Only open incidents. Leave it out for every incident of the last 30 days.

The incidents.

Media typeapplication/json
object
incidents
required
Array<object>
object
id
string
kind
string
Allowed values: offline service resource country cert
subject

The service, metric (cpu, memory, disk) or country code, when the kind has one.

string | null
state
string
Allowed values: open resolved
opened_at
string | null format: date-time
sent_at

When its message went. Servers failing together share one message.

string | null format: date-time
resolved_at
string | null format: date-time
servers
Array<object>
object
id
string
name
string
back
boolean
detail

What the message was built from, such as a certificate’s expiry and names.

object
Example
{
"incidents": [
{
"id": "hin_3",
"kind": "offline",
"state": "open"
}
]
}
X-RateLimit-Limit
integer

Requests the workspace’s plan allows per minute.

X-RateLimit-Remaining
integer

Requests left in the current minute.

X-RateLimit-Reset
integer

Unix time, in seconds, when the current minute ends.

A filter has a value it doesn’t take.

Media typeapplication/json
object
error
required
boolean
code
required

The HTTP status, repeated.

integer
message
required

What went wrong.

string
details

More detail, on some errors.

retry_after

Seconds to wait, on the 429 for wrong keys.

integer
Examples
{
"error": true,
"code": 400,
"message": "state can only be open; leave it out for every incident of the last 30 days."
}

The API key is missing, wrong, expired, switched off, or no longer valid.

Media typeapplication/json
object
error
required
boolean
code
required

The HTTP status, repeated.

integer
message
required

What went wrong.

string
details

More detail, on some errors.

retry_after

Seconds to wait, on the 429 for wrong keys.

integer
Examples
{
"error": true,
"code": 401,
"message": "API key is required. Provide X-API-Key header or Authorization: Bearer <key>"
}

No active project has this ID.

Media typeapplication/json
object
error
required
boolean
code
required

The HTTP status, repeated.

integer
message
required

What went wrong.

string
details

More detail, on some errors.

retry_after

Seconds to wait, on the 429 for wrong keys.

integer
Example
{
"error": true,
"code": 404,
"message": "Project not found"
}

A usage limit was reached, or this IP address made too many requests with a wrong key.

Usage limits are per workspace and plan: per minute (Retry-After: 60), per day (Retry-After: 3600), and per month (no Retry-After). They use their own body shape. An IP address may send 10 wrong keys a minute; one more is allowed every 6 seconds. While that allowance is used up, every request from the address is refused, even one with a valid key.

Media typeapplication/json
One of:
object
error
required
string
Allowed values: Rate limit exceeded Daily limit exceeded Monthly limit exceeded
message
required
string
retry_after

Seconds to wait. Absent for the monthly limit.

integer
Examples
{
"error": "Rate limit exceeded",
"message": "Per-minute limit of 60 requests exceeded",
"retry_after": 60
}
Retry-After
integer

Seconds to wait. 60 for the per-minute limit, 3600 for the daily limit, 6 after wrong keys. Absent for the monthly limit.

Something failed on TunnelHQ’s side.

Media typeapplication/json
object
error
required
boolean
code
required

The HTTP status, repeated.

integer
message
required

What went wrong.

string
details

More detail, on some errors.

retry_after

Seconds to wait, on the 429 for wrong keys.

integer
Example
{
"error": true,
"code": 500,
"message": "Internal server error"
}