Delulu documentation

API errors

Error envelope, HTTP statuses, retry behavior, validation details, and quota responses.

Typed endpoints return one envelope:

{
  "error": {
    "code": "ValidationError",
    "message": "The request is invalid",
    "details": {
      "issues": [
        { "path": "targets[0].connectionId", "message": "Connection not found" }
      ]
    }
  }
}

Status reference

StatusCodeMeaningRetry guidance
401UnauthorizedErrorMissing, invalid, expired, or revoked credential.Refresh or reauthorize.
402QuotaExceededErrorPlan limit is exhausted.Use upgradeUrl or wait for reset.
403ForbiddenErrorRole, scope, payer, membership, or workspace binding denies access.Correct authorization; do not blind-retry.
404NotFoundErrorThe named resource is unavailable in this workspace.Verify ID and workspace.
409ConflictErrorState conflict or duplicate/in-progress idempotent operation.Inspect the original resource.
422ValidationErrorDomain or payload validation failed.Correct details.issues.
429RateLimitedErrorPer-credential request rate exceeded.Wait details.retryAfter seconds.

QuotaExceededError.details includes resource, limit, current, and upgradeUrl. NotFoundError and ConflictError include resource.

Provider-backed analytics can also return HTTP 503. Treat it as retryable only when the operation is read-only or protected by the same idempotency key.

OAuth errors

OAuth endpoints use the protocol envelope instead:

{
  "error": "authorization_pending",
  "error_description": "The user has not approved this request"
}

Respect the HTTP status and the device polling interval. slow_down increases the interval by at least five seconds.