Cledara API

Cledara's public REST API over your own workspace. As of 2026-09-05 it is three read-only GET operations: list applications (software subscriptions with status, owner, teams, budget, balance, next renewal date and expected next payment), list transactions (card payments, transfers and account movements, filterable by RFC 3339 date window and application id, paged by offset), and fetch a five-minute download URL for a transaction's invoice. Authentication is a Bearer API key self-served in the Cledara app that carries the creating user's permissions; there are no scopes. Rate limited to 120 requests per minute per key with X-RateLimit-* headers declared in the contract. There are no write operations, no webhooks, no sandbox and no SDKs. The API is included at no extra cost on every Cledara plan.

Operations 3

GET /v0/applications List applications in the workspace
GET /v0/transactions List transactions in a workspace
GET /v0/transactions/{transactionId}/invoice-url Get the URL to download a transaction invoice

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/cledara-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

cledara-api-openapi.json Raw ↑
{
  "openapi": "3.1.0",
  "info": {
    "title": "Cledara API",
    "version": "v1",
    "description": "\nThe Cledara API gives you programmatic access to your Cledara workspace — applications, transactions, and more coming soon.\n\n## Authentication\n\nAll endpoints require an API key passed as a Bearer token: `Authorization: Bearer <your-api-key>`\n\nAPI keys are managed in the Cledara web app under **Profile → API Keys**. Each key grants the same level of access as the user who created it.\n\n## Rate limits\n\nRequests are limited to **120 per minute per API key**. Every response includes the following headers:\n\n| Header | Description |\n|--------|-------------|\n| `X-RateLimit-Limit` | Maximum requests allowed in the current window |\n| `X-RateLimit-Remaining` | Requests remaining in the current window |\n| `X-RateLimit-Reset` | Unix timestamp when the window resets |\n\nWhen the limit is exceeded the API responds with `429 Too Many Requests` and an additional `Retry-After` header indicating how many seconds to wait before retrying.\n"
  },
  "servers": [
    {
      "url": "https://api.cledara.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API key issued from the Cledara Web Application"
      }
    },
    "schemas": {
      "Application": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Application unique identifier",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "name": {
            "type": "string",
            "description": "Application name"
          },
          "status": {
            "type": "string",
            "enum": ["pending", "requested", "active", "disabled", "inactive"],
            "description": "Application status"
          },
          "budget": {
            "$ref": "#/components/schemas/Budget"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp of application creation"
          },
          "owner": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Member unique identifier"
              },
              "name": {
                "type": "string",
                "description": "Member name"
              }
            },
            "required": ["id", "name"],
            "description": "Application owner"
          },
          "nextRenewalDate": {
            "type": ["string", "null"],
            "format": "date",
            "description": "ISO 8601 date of next renewal date"
          },
          "balance": {
            "type": ["number", "null"],
            "description": "Application balance"
          },
          "nextPayment": {
            "type": ["object", "null"],
            "properties": {
              "date": {
                "type": "string",
                "format": "date",
                "description": "ISO 8601 date of next payment"
              },
              "amount": {
                "type": "number",
                "description": "Expected amount of the next payment"
              }
            },
            "required": ["date", "amount"],
            "description": "Expected next payment, based on last payment and budget periodicity"
          },
          "teams": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "Team unique identifier"
                },
                "name": {
                  "type": "string",
                  "description": "Team name"
                }
              },
              "required": ["id", "name"]
            },
            "description": "Teams the application is assigned to"
          }
        },
        "required": [
          "id",
          "name",
          "status",
          "budget",
          "createdAt",
          "owner",
          "nextRenewalDate",
          "balance",
          "nextPayment",
          "teams"
        ]
      },
      "Budget": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["soft", "fixed", "noBudget"],
            "description": "Budget type"
          },
          "limit": {
            "type": ["number", "null"],
            "description": "Budget limit amount for the given period"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code"
          },
          "periodicity": {
            "type": ["string", "null"],
            "enum": ["week", "month", "quarter", "year", null],
            "description": "Periodicity of the budget"
          }
        },
        "required": ["type", "limit", "currency", "periodicity"]
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Transaction unique identifier",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "amount": {
            "type": "number",
            "description": "Transaction amount in the account currency. Negative for debits, positive for credits.",
            "example": -100.01
          },
          "currency": {
            "type": "string",
            "enum": ["GBP", "EUR", "USD"],
            "description": "Currency of the account.",
            "example": "EUR"
          },
          "localAmount": {
            "type": "number",
            "description": "Transaction amount in the currency of the payment, if different from the account currency. Negative for debits, positive for credits.",
            "example": -114.02
          },
          "localCurrency": {
            "type": "string",
            "description": "Currency of the payment, if different from the account currency.",
            "example": "USD"
          },
          "accountType": {
            "type": "string",
            "enum": ["application", "saasMain", "spend", "others"],
            "description": "Type of the account that the transaction belongs to",
            "x-enum-descriptions": {
              "application": "Application with fixed budget",
              "saasMain": "Application with soft budget, and other transactions on the main SaaS Management account",
              "spend": "Spend Management account",
              "others": "Other account"
            }
          },
          "description": {
            "type": "string",
            "description": "Description of the transaction"
          },
          "comment": {
            "type": "string",
            "description": "Comment of the transaction"
          },
          "application": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Application unique identifier",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string"
              }
            },
            "required": ["id", "name"],
            "description": "Application that the transaction belongs to, if applicable"
          },
          "authorizedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp of transaction authorization (when it occurred)",
            "example": "2026-01-01T00:00:00Z"
          },
          "settledAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp of transaction settlement (when it got confirmed)",
            "example": "2026-01-01T00:00:00Z"
          },
          "type": {
            "type": "string",
            "enum": [
              "cardSend",
              "cardReceive",
              "transferSend",
              "transferReceive",
              "applicationTopUp",
              "applicationFlush",
              "other"
            ],
            "description": "Type of the transaction"
          },
          "card": {
            "type": ["object", "null"],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "Card unique identifier",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": ["string", "null"],
                "description": "Name of the card, only for Spend Management cards",
                "example": "Coffee Card"
              },
              "type": {
                "type": "string",
                "enum": ["saasMain", "saasSupplementary", "spend"],
                "description": "Type of the card.\n\n- `saasMain`: Main card for SaaS applications\n- `saasSupplementary`: Supplementary card for SaaS applications\n- `spend`: Spend Management card",
                "example": "saasMain"
              },
              "number": {
                "type": "string",
                "description": "Last 4 digits of the card number",
                "example": "1234"
              },
              "owner": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "ID of the card owner",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the card owner",
                    "example": "John Doe"
                  }
                },
                "required": ["id", "name"]
              },
              "status": {
                "type": "string",
                "enum": ["pendingReview", "inactive", "active", "disabled", "failed", "cancelled", "expired"],
                "description": "Status of the card",
                "example": "active"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Tags of the card",
                "example": ["AI Expenses", "Variable Expenses"]
              }
            },
            "required": ["id", "name", "type", "number", "owner", "status", "tags"],
            "description": "Card that the transaction belongs to, if it's a card transaction"
          },
          "hasInvoice": {
            "type": "boolean",
            "description": "Whether the transaction has an invoice uploaded. You can download the invoice from the v0/transactions/{id}/invoice-url endpoint"
          },
          "invoiceDetails": {
            "type": ["object", "null"],
            "properties": {
              "number": {
                "type": ["string", "null"],
                "description": "Invoice number extracted from the invoice, if available",
                "example": "INV-2026-0042"
              },
              "date": {
                "type": ["string", "null"],
                "format": "date",
                "description": "ISO 8601 date the invoice was issued, if available",
                "example": "2026-01-15"
              },
              "vat": {
                "type": ["object", "null"],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the VAT rate applied to this invoice",
                    "example": "Standard rate - 21%"
                  },
                  "rate": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "description": "VAT rate applied to this invoice, as a fraction between 0 and 1",
                    "example": 0.21
                  }
                },
                "required": ["name", "rate"],
                "description": "VAT applied to this invoice, if set"
              }
            },
            "required": ["number", "date", "vat"],
            "description": "Invoice details extracted by the invoice manager, only available for confirmed invoices"
          },
          "accounting": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Id of the accounting field, internal of cledara. Useful in case of renames."
                    },
                    "name": {
                      "type": "string",
                      "description": "Name of the accounting field"
                    }
                  },
                  "required": ["id", "name"]
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "string",
                      "format": "date",
                      "description": "ISO 8601 date"
                    }
                  ],
                  "description": "Value of this field for this transaction. External id for records."
                },
                "name": {
                  "type": "string",
                  "description": "Name of the value, only filled for records."
                }
              },
              "required": ["field", "value"]
            },
            "description": "Accounting fields and values for this transaction. Empty values are omitted."
          }
        },
        "required": [
          "id",
          "amount",
          "currency",
          "accountType",
          "description",
          "authorizedAt",
          "type",
          "card",
          "hasInvoice",
          "invoiceDetails",
          "accounting"
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/v0/applications": {
      "get": {
        "summary": "List applications in the workspace",
        "tags": ["Applications"],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "number",
                  "description": "The maximum number of requests per time window",
                  "example": 1000
                },
                "required": true,
                "description": "The maximum number of requests per time window"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "number",
                  "description": "The timestamp of the next reset",
                  "example": 1719859200
                },
                "required": true,
                "description": "The timestamp of the next reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Application"
                  },
                  "description": "List of applications"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "Insufficient privileges for this account"
          },
          "429": {
            "description": "Too many requests",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "number",
                  "description": "The number of seconds to wait before the next request",
                  "example": 10
                },
                "required": true,
                "description": "The number of seconds to wait before the next request"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              }
            }
          }
        }
      }
    },
    "/v0/transactions": {
      "get": {
        "summary": "List transactions in a workspace",
        "tags": ["Transactions"],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Fetch transactions that occurred after this date RFC 3339 timestamp",
              "example": "2026-01-01T00:00:00Z"
            },
            "required": false,
            "description": "Fetch transactions that occurred after this date RFC 3339 timestamp",
            "name": "from",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Fetch transactions that occurred before this date RFC 3339 timestamp",
              "example": "2026-01-31T23:59:59Z"
            },
            "required": false,
            "description": "Fetch transactions that occurred before this date RFC 3339 timestamp",
            "name": "to",
            "in": "query"
          },
          {
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid",
                "description": "Application unique identifier",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "description": "Fetch transactions for these application IDs"
            },
            "required": false,
            "description": "Fetch transactions for these application IDs",
            "name": "applicationIds",
            "in": "query"
          },
          {
            "schema": {
              "type": ["integer", "null"],
              "minimum": 0,
              "description": "Offset for pagination",
              "example": 0
            },
            "required": false,
            "description": "Offset for pagination",
            "name": "offset",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "number",
                  "description": "The maximum number of requests per time window",
                  "example": 1000
                },
                "required": true,
                "description": "The maximum number of requests per time window"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "number",
                  "description": "The timestamp of the next reset",
                  "example": 1719859200
                },
                "required": true,
                "description": "The timestamp of the next reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transactions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Transaction"
                      },
                      "description": "List of transactions"
                    },
                    "nextOffset": {
                      "type": ["integer", "null"],
                      "minimum": 0,
                      "description": "Offset for the next page, null if there is no next page"
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether there are more transactions to fetch"
                    },
                    "totalCount": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Total number of transactions"
                    }
                  },
                  "required": ["transactions", "nextOffset", "hasMore", "totalCount"]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "Insufficient privileges for this account"
          },
          "429": {
            "description": "Too many requests",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "number",
                  "description": "The number of seconds to wait before the next request",
                  "example": 10
                },
                "required": true,
                "description": "The number of seconds to wait before the next request"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              }
            }
          }
        }
      }
    },
    "/v0/transactions/{transactionId}/invoice-url": {
      "get": {
        "summary": "Get the URL to download a transaction invoice",
        "tags": ["Transactions"],
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Transaction unique identifier",
              "example": "123e4567-e89b-12d3-a456-426614174000"
            },
            "required": true,
            "description": "Transaction unique identifier",
            "name": "transactionId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "number",
                  "description": "The maximum number of requests per time window",
                  "example": 1000
                },
                "required": true,
                "description": "The maximum number of requests per time window"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "number",
                  "description": "The timestamp of the next reset",
                  "example": 1719859200
                },
                "required": true,
                "description": "The timestamp of the next reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "invoiceUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "URL to the invoice, valid for 5 minutes"
                    }
                  },
                  "required": ["invoiceUrl"]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "403": {
            "description": "Insufficient privileges for this account"
          },
          "404": {
            "description": "Record not found"
          },
          "429": {
            "description": "Too many requests",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "number",
                  "description": "The number of seconds to wait before the next request",
                  "example": 10
                },
                "required": true,
                "description": "The number of seconds to wait before the next request"
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "number",
                  "description": "The number of requests remaining in the current time window",
                  "example": 0
                },
                "required": true,
                "description": "The number of requests remaining in the current time window"
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {}
}