# Overview
Civillo exposes a RESTful API for developers to build their own integrations.
Our APIs are designed to enable teams to build robust integrations that help them customise and get the most value out of Civillo. Any user can generate an API key/secret pair within their organization and use it to query the Civillo database.
# Base URL
All API requests are made to:
https://app.civillo.com/api/v1/
Most endpoints are scoped to an organization using its nickname, for example:
https://app.civillo.com/api/v1/{nickname}/projects
# Authentication
The API uses bearer token authentication. You attach your credentials to every request as an Authorization header, formatted as the string Bearer followed by the base64 representation of your key:secret pair.
See Obtaining Credentials to generate a key/secret pair, and Making your first API call for a full worked example.
# Requests and responses
- All request and response bodies are JSON. Send
Content-Type: application/jsonwhen including a request body. - Successful requests return a
2xxstatus code (typically200 OK). - Many list endpoints support pagination. See the Pagination guide for details.
# Errors
The API uses standard HTTP status codes to indicate the result of a request:
| Status | Meaning |
|---|---|
200 OK | The request succeeded. |
400 Bad Request | The request was malformed or missing required parameters. |
401 Unauthorized | Missing or invalid credentials. |
403 Forbidden | The credentials are valid but lack permission for this resource. |
404 Not Found | The requested resource does not exist. |
429 Too Many Requests | A rate limit was exceeded. See Rate limiting. |
# Rate limiting
Requests are rate limited to protect the platform. If you exceed a limit you will receive a 429 Too Many Requests response. See the Rate limiting page for the current limits.
# Next steps
- Obtaining Credentials — generate your API key and secret
- Making your first API call — authenticate and query your first endpoint
- Reference — full endpoint reference