Skip to content

Errors

All error responses share this shape:

{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
},
"meta": {
"api_version": "v1",
"request_id": "req_xxxxxxxx"
}
}
CodeStatusDescription
MISSING_API_KEY401No Authorization: Bearer header
INVALID_API_KEY401Bearer key does not match any active key
INSUFFICIENT_SCOPE403API key lacks the required scope
RATE_LIMITED429Too many requests. Wait for the Retry-After header
INVALID_TOKEN400Linking token invalid, expired, or already used
PILOT_NOT_FOUND404Pilot not linked (never linked, or disconnected)
INVALID_REQUEST400Malformed request body or query parameters (e.g. oversized body on /v1/link, invalid UUID on the batch endpoint)
NOT_FOUND404Unknown endpoint path
METHOD_NOT_ALLOWED405HTTP method not supported by this endpoint (e.g. GET on /v1/link)
INTERNAL_ERROR500Server error. Email support@skyden.app with the request_id

A 429 response includes a Retry-After: 60 header (seconds). Back off for that duration before retrying. If you consistently hit the limit, email support@skyden.app to discuss a higher tier.