Access provider status, incidents, and historical data programmatically.
Three endpoints need no API key. They are rate limited to 120 requests/minute per IP and built for pipelines and failover rules.
The verdict is the HTTP status code: 200 when
every requested service is healthy, 503
otherwise, so curl -f is the entire
integration. Gate several services with
?services=claude,openai, and loosen the
policy with ?allow=degraded (comma-separated
status levels to accept besides
operational). Unknown service ids return
404 so a typo fails your pipeline loudly
instead of silently passing.
# exits non-zero unless Claude is operational
curl -fsS https://canivibe.ai/api/healthy/claude
# gate on several providers, tolerating degraded performance
curl -fsS "https://canivibe.ai/api/healthy?services=claude,openai&allow=degraded"
The JSON body carries the per-service verdicts:
{
"healthy": false,
"checked_at": "2026-07-07T12:00:00Z",
"services": [
{ "id": "claude", "status": "degraded", "healthy": false,
"status_since": "2026-07-07T05:41:12Z" },
{ "id": "openai", "status": "operational", "healthy": true }
]
}
{
"id": "claude",
"name": "Claude (Anthropic)",
"status": "degraded",
"description": "Claude Code (degraded_performance)",
"status_since": "2026-07-07T05:41:12Z",
"last_checked": "2026-07-07T11:59:40Z"
}
Everything above in one document, plus
overall_status. Cached for 30 seconds; CORS
enabled (Access-Control-Allow-Origin: *).
Status levels are operational,
degraded, partial_outage,
major_outage, maintenance and
unknown.
All API requests require authentication using an API key. API keys are available to Pro and Enterprise subscribers. You can create and manage your API keys from the dashboard.
Include your API key using one of these two methods:
Authorization Header (recommended):
Authorization: Bearer civ_your_api_key_here
The "Bearer " prefix is required per RFC 6750.
X-API-Key Header:
X-API-Key: civ_your_api_key_here
Rate limit headers are included in all responses:
Base URL: https://canivibe.com/api/v1
List all tracked AI providers with their current status.
{
"providers": [
{
"id": "claude",
"name": "Claude (Anthropic)",
"status": "operational",
"last_checked": "2025-01-15T10:30:00Z"
},
{
"id": "openai",
"name": "OpenAI",
"status": "operational",
"last_checked": "2025-01-15T10:30:00Z"
}
]
}
Get current status for all or specific providers.
| Parameter | Description |
|---|---|
| provider optional | Filter by provider ID. Comma-separated for multiple providers. |
GET /api/v1/status?provider=claude,openai
{
"overall": "operational",
"providers": [
{
"id": "claude",
"name": "Claude (Anthropic)",
"status": "operational",
"description": "All systems operational",
"last_checked": "2025-01-15T10:30:00Z"
}
],
"timestamp": "2025-01-15T10:30:00Z"
}
Get historical incidents within a date range.
| Parameter | Description |
|---|---|
| provider optional | Filter by provider ID |
| start optional | Start date (YYYY-MM-DD). Defaults to 30 days ago. |
| end optional | End date (YYYY-MM-DD). Defaults to today. |
{
"incidents": [
{
"id": "inc_123",
"provider_id": "claude",
"provider_name": "Claude (Anthropic)",
"title": "API Performance Degradation",
"status": "resolved",
"impact": "minor",
"started_at": "2025-01-10T14:00:00Z",
"resolved_at": "2025-01-10T16:30:00Z"
}
],
"query": {
"start": "2024-12-16",
"end": "2025-01-15",
"provider": null
}
}
Get daily status history for providers.
| Parameter | Description |
|---|---|
| provider optional | Filter by provider ID |
| days optional | Number of days of history (1-90). Defaults to 30. |
{
"history": [
{
"provider_id": "claude",
"provider_name": "Claude (Anthropic)",
"days": [
{"date": "2025-01-15", "status": "operational"},
{"date": "2025-01-14", "status": "degraded"},
{"date": "2025-01-13", "status": "operational"}
]
}
],
"query": {
"days": 30,
"provider": null
}
}
The API returns standard HTTP status codes and JSON error responses.
{
"error": "Unauthorized",
"code": "invalid_api_key",
"message": "Invalid or expired API key"
}
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (missing or invalid API key) |
| 403 | Forbidden (valid key but insufficient subscription) |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
| Code | Description |
|---|---|
| missing_api_key | No API key provided in the request |
| invalid_api_key | API key is invalid or has been revoked |
| subscription_required | API access requires a Pro or Enterprise subscription |
| rate_limit_exceeded | Too many requests, try again later |