Programmatic access to your organization's clients and proposals.Note: The API is available exclusively on the Enterprise plan.
All requests require an API key to be passed in the Authorization header as a Bearer token. You can generate your API key in the application under Integrations → API Access → Generate Key.
The key is displayed only once upon creation. Store it securely. Do not share it publicly.
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNimblo API uses a single gateway endpoint. All operations are performed using a POST request. The actual operation is determined by the resource and method parameters inside the JSON body.
POST https://app.nimblo.io/functions/apiGatewayMaximum 60 requests per minute per API key. Exceeding this limit will return a 429 Too Many Requests response.
Each key is scoped to a single organization. Keys are stored as SHA-256 hashes. You can rotate or revoke keys at any time in the dashboard.
{
"resource": "clients | proposals",
"method": "GET | POST | PUT | DELETE",
// ...additional parameters
}// List all clients
{
"resource": "clients",
"method": "GET"
}
// Get a specific client
{
"resource": "clients",
"method": "GET",
"id": "client_id"
}Required field: company_name
{
"resource": "clients",
"method": "POST",
"company_name": "Acme s.r.o.",
"email": "info@acme.cz",
"ico": "12345678",
"address": "Ulice 1, Praha"
}Required field: id
// Update client
{
"resource": "clients",
"method": "PUT",
"id": "client_id",
"company_name": "New Company Name",
"email": "new@email.com"
}
// Delete client
{
"resource": "clients",
"method": "DELETE",
"id": "client_id"
}Supported filters: id, client_id, status (draft, sent, won, lost, concept)
// Filter proposals
{
"resource": "proposals",
"method": "GET",
"status": "sent",
"client_id": "client_id"
}Required field: title
{
"resource": "proposals",
"method": "POST",
"title": "Website Redesign",
"client_id": "client_id",
"currency": "USD",
"total_value": 15000,
"status": "draft"
}Required field: id
// Update proposal
{
"resource": "proposals",
"method": "PUT",
"id": "proposal_id",
"status": "sent",
"total_value": 18000
}
// Delete proposal
{
"resource": "proposals",
"method": "DELETE",
"id": "proposal_id"
}{
"data": [ ... ]
}{
"error": "Error description message"
}| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request (missing required field, unknown resource) |
| 401 | Unauthorized (invalid or missing API key) |
| 404 | Not Found (record does not exist) |
| 405 | Method Not Allowed |
| 429 | Too Many Requests (rate limit exceeded) |
| 500 | Internal Server Error |
curl -X POST https://app.nimblo.io/functions/apiGateway \
-H "Authorization: Bearer sk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"resource": "clients", "method": "GET"}'