Skip to content

Xplorr API Reference

The Xplorr API is a REST API served over HTTPS. All endpoints require authentication unless noted otherwise. Base URL: https://api.xplorr.io/api/v1.

All requests must include a Bearer token in the Authorization header:

Terminal window
curl -H "Authorization: Bearer xplorr_your_token" \
https://api.xplorr.io/api/v1/costs/summary

Get your API token from Settings → API in the console.

MethodPathDescription
POST/auth/loginLog in with email + password. Returns access token + refresh token.
POST/auth/registerCreate a new account.
POST/auth/refreshExchange a refresh token for a new access token.
POST/auth/logoutRevoke the current refresh token.
POST/auth/forgot-passwordSend a password reset email.
POST/auth/reset-passwordReset password using a token from the reset email.
POST/auth/verify-2faVerify a TOTP code during login.
POST/auth/webauthn/registerStart WebAuthn registration flow.
POST/auth/webauthn/authenticateAuthenticate with a registered passkey.
MethodPathAuthDescription
GET/costs/summaryYesTotal spend for a date range, grouped by period (daily/monthly).
GET/costs/by-serviceYesSpend broken down by cloud service.
GET/costs/by-accountYesSpend broken down by cloud account.
GET/costs/by-regionYesSpend broken down by region.
GET/costs/by-tagYesSpend grouped by a specified tag key.
GET/costs/dailyYesDaily cost time series for a date range.
GET/costs/trendYesMonth-over-month trend with percentage change.

Common query parameters: start_date, end_date, account_id, provider, service, tag_key, tag_value.

MethodPathAuthDescription
GET/inventoryYesList all discovered cloud resources with metadata.
GET/inventory/:idYesGet details for a specific resource.
GET/inventory/summaryYesResource counts by type, region, and account.

Query parameters: provider, account_id, resource_type, region, tag_key, tag_value, page, per_page.

MethodPathAuthDescription
GET/recommendationsYesList all recommendations with filtering.
GET/recommendations/:idYesGet full details for a recommendation including remediation scripts.
PATCH/recommendations/:idYesUpdate status (open, in_progress, applied, archived) or snooze.
GET/recommendations/summaryYesCounts and total estimated savings by type and status.

Query parameters: status, type, account_id, min_savings, sort_by, page, per_page.

MethodPathAuthDescription
GET/anomaliesYesList detected anomalies.
GET/anomalies/:idYesGet anomaly details including AI explanation.
PATCH/anomalies/:idYesUpdate status (open, acknowledged, resolved).
GET/alert-rulesYesList custom alert rules.
POST/alert-rulesYesCreate a custom alert rule.
PATCH/alert-rules/:idYesUpdate an alert rule.
DELETE/alert-rules/:idYesDelete an alert rule.
MethodPathAuthDescription
GET/budgetsYesList all budgets.
POST/budgetsYesCreate a new budget.
GET/budgets/:idYesGet budget details with current spend and forecast.
PATCH/budgets/:idYesUpdate a budget.
DELETE/budgets/:idYesDelete a budget.
MethodPathAuthDescription
POST/reportsYesGenerate a report. Returns a download URL.
GET/reportsYesList previously generated reports.
GET/reports/:id/downloadYesDownload a generated report file.
GET/reports/schedulesYesList scheduled reports.
POST/reports/schedulesYesCreate a scheduled report.
PATCH/reports/schedules/:idYesUpdate a scheduled report.
DELETE/reports/schedules/:idYesDelete a scheduled report.
MethodPathAuthDescription
GET/forecastYesGet the 60-day cost forecast with confidence intervals.
GET/forecast/accuracyYesHistorical forecast accuracy for the past 6 months.

Query parameters: account_id, service, model (linear or seasonal).

MethodPathAuthDescription
GET/tagsYesList all tag keys and their value counts.
GET/tags/violationsYesList resources violating tagging policies.
GET/tag-policiesYesList tagging policies.
POST/tag-policiesYesCreate a tagging policy.
PATCH/tag-policies/:idYesUpdate a tagging policy.
DELETE/tag-policies/:idYesDelete a tagging policy.
MethodPathAuthDescription
GET/accountsYesList connected cloud accounts with sync status.
POST/accountsYesConnect a new cloud account.
GET/accounts/:idYesGet account details and last sync timestamp.
PATCH/accounts/:idYesUpdate account credentials or settings.
DELETE/accounts/:idYesDisconnect a cloud account.
POST/accounts/:id/syncYesTrigger a manual sync.
MethodPathAuthDescription
GET/orgYesGet organization details.
PATCH/orgYesUpdate organization settings (name, 2FA enforcement).
GET/org/membersYesList all organization members.
POST/org/inviteYesInvite a user to the organization.
PATCH/org/members/:idYesUpdate a member’s role or account access.
DELETE/org/members/:idYesRemove a member from the organization.
GET/audit-logsYesList audit log entries (Admin+ only).
MethodPathAuthDescription
GET/coverageYesCurrent RI/SP/Spot/On-demand spend breakdown.
GET/coverage/dailyYesDaily coverage breakdown for the past 90 days.
GET/coverage/gapsYesCoverage gap analysis with savings estimates.
GET/coverage/plannerYesCommitment planner recommendations.
MethodPathAuthDescription
GET/notifications/preferencesYesGet current user’s notification preferences.
PATCH/notifications/preferencesYesUpdate notification preferences.
POST/notifications/slack/webhookYesConfigure Slack webhook URL.
POST/notifications/slack/testYesSend a test message to Slack.

All errors follow a consistent format:

{
"error": {
"code": "BUDGET_NOT_FOUND",
"message": "Budget with ID 'abc123' not found.",
"status": 404
}
}

Common error codes: UNAUTHORIZED (401), FORBIDDEN (403), NOT_FOUND (404), RATE_LIMITED (429), INTERNAL_ERROR (500).

List endpoints support cursor-based pagination:

Terminal window
GET /api/v1/recommendations?page=2&per_page=25

Response includes pagination metadata:

{
"data": [...],
"pagination": {
"page": 2,
"per_page": 25,
"total": 142,
"total_pages": 6
}
}

The complete OpenAPI 3.0 specification is available at:

https://api.xplorr.io/api/v1/docs

You can import it into Postman, Insomnia, or any OpenAPI-compatible tool.