Skip to main content

API Reference Overview

frugally.app provides REST APIs for programmatic access to key platform features. Use these APIs to integrate frugally.app into your existing tooling, CI/CD pipelines, and internal dashboards.


Base URL​

All API requests are made to:

https://api.frugally.app/v1

Authentication​

frugally.app supports two authentication methods:

MethodUse caseHeader
API keyServer-to-server integrations, scripts, CI/CDAuthorization: Bearer <api-key>
OAuth tokenUser-context requests from web applicationsAuthorization: Bearer <oauth-token>

Generating an API key​

  1. Navigate to Settings > API Keys in the dashboard.
  2. Click Create API Key.
  3. Give the key a descriptive name (e.g. CI Pipeline — Guard checks).
  4. Select the permission scope — keys can be scoped to specific features (Guard, SCIM, etc.).
  5. Copy the key immediately — it is only shown once.
caution

Treat API keys like passwords. Do not commit them to source control. Use environment variables or a secrets manager.


Versioning​

The API is versioned via the URL path (/v1). When breaking changes are introduced, a new version is published and the previous version remains available for a deprecation period.

VersionStatusNotes
v1CurrentAll endpoints documented here

Rate limiting​

LimitValue
Requests per minute (per key)120
Burst (concurrent requests)10

When you exceed the rate limit, the API returns 429 Too Many Requests with a Retry-After header indicating how many seconds to wait.


Common request patterns​

Pagination​

List endpoints return paginated results. Use page and per_page query parameters:

GET /v1/guard/projects?page=2&per_page=25
ParameterDefaultMaximum
page1—
per_page25100

The response includes pagination metadata:

{
"data": [...],
"meta": {
"current_page": 2,
"per_page": 25,
"total_pages": 4,
"total_count": 87
}
}

Filtering​

Most list endpoints support filtering via query parameters:

GET /v1/guard/projects?status=active&connection_id=conn_abc123

Sorting​

Use the sort parameter with a field name. Prefix with - for descending order:

GET /v1/guard/violations?sort=-created_at

Common response format​

Success responses​

{
"data": { ... },
"meta": { ... }
}

Error responses​

{
"error": {
"code": "validation_error",
"message": "The connection_id field is required.",
"details": [
{ "field": "connection_id", "message": "This field is required." }
]
}
}

Error codes​

HTTP statusCodeMeaning
400bad_requestMalformed request body or parameters
401unauthorizedMissing or invalid authentication
403forbiddenValid authentication but insufficient permissions
404not_foundResource does not exist
409conflictResource state conflict (e.g. duplicate name)
422validation_errorRequest body failed validation
429rate_limitedToo many requests — check Retry-After header
500internal_errorUnexpected server error — contact support

Available APIs​

APIDescriptionDocumentation
Guard API v1Manage projects, budgets, violations, and scansGuard API →
SCIM APIProvision and deprovision users and groups via SCIM 2.0SCIM API →
Webhook payloadsEvent payload schemas delivered to your webhook endpointsWebhook payloads →

SDKs and tools​

frugally.app does not currently provide official SDKs. The REST API can be called from any HTTP client:

# Example: List Guard projects
curl -H "Authorization: Bearer $FRUGALLY_API_KEY" \
https://api.frugally.app/v1/guard/projects
tip

Use tools like Postman or httpie to explore the API interactively during development.


Need help?​

If you encounter issues with the API, contact support@frugally.app with:

  • The full request URL and method
  • The response status code and body
  • Your API key ID (not the key itself)