Syllevo API
Syllevo collects invoices for accountants. The API is the same surface the Syllevo web app uses: client companies, the documents that arrive for them, the invoices read out of those documents, the suppliers behind them, and what is still missing at month end.
Use it to pull invoices and suppliers into accounting software, to check month-end completeness from your own dashboard, or to connect a client's sources without anybody opening the web app.
- Base URL:
https://api.syllevo.com - Every path is versioned and the version is part of the route:
/v1/invoices, never/invoices. - Contract version:
v1. See Changelog.
A v2 would arrive beside v1 rather than replacing it. Nothing in v1 changes shape under you.
What you need before the first call
- A Syllevo organization with an active package. Without one, most routes answer 402. See Conventions.
- An API key, created in the web app under Settings, then API keys. The key is shown once. See API keys.
- Nothing else. There is no SDK you have to install and no handshake to complete.
First call in five minutes
Every example below uses invented data. syl_live_examplekeynotreal000000000000 is not a key,
it is a placeholder shaped like one.
Step 1. Check that the key works.
GET /v1/status HTTP/1.1
Host: api.syllevo.com
X-Api-Key: syl_live_examplekeynotreal000000000000
{
"actor": "apikey",
"organizationId": "11111111-1111-4111-8111-111111111111",
"correlationId": "0HN7A2EXAMPLE:00000001"
}
The key carries its own organization, so you never send an organization header with it. If
actor comes back as apikey and organizationId is filled in, you are through the door.
Step 2. List the client companies the key can see.
GET /v1/profiles?pageSize=2 HTTP/1.1
Host: api.syllevo.com
X-Api-Key: syl_live_examplekeynotreal000000000000
{
"items": [
{
"id": "22222222-2222-4222-8222-222222222222",
"name": "Example Contabil SRL",
"taxIdentifier": "RO00000000",
"countryCode": "RO",
"locale": "ro",
"archivedAt": null,
"createdAt": "2026-01-15T09:00:00Z",
"canManageSources": true,
"avatarUrl": null,
"avatarThumbnailUrl": null
}
],
"page": 1,
"pageSize": 2,
"totalCount": 1,
"totalPages": 1
}
Step 3. Read this month's invoices for that client.
GET /v1/invoices?profileId=22222222-2222-4222-8222-222222222222&from=2026-09-01&to=2026-09-30 HTTP/1.1
Host: api.syllevo.com
X-Api-Key: syl_live_examplekeynotreal000000000000
{
"items": [
{
"id": "33333333-3333-4333-8333-333333333333",
"profileId": "22222222-2222-4222-8222-222222222222",
"direction": 0,
"supplierId": "44444444-4444-4444-8444-444444444444",
"supplierName": "Example Utilities SA",
"number": "EU-2026-000120",
"issueDate": "2026-09-04",
"dueDate": "2026-09-24",
"currencyCode": "RON",
"netAmount": 1000.0,
"vatAmount": 190.0,
"totalAmount": 1190.0,
"documentLinks": [
{ "documentId": "55555555-5555-4555-8555-555555555555", "reason": 0, "trustRank": 2 }
],
"counterpartyName": null,
"counterpartyTaxId": null,
"counterpartyCountryCode": null,
"submission": null,
"deliveries": []
}
],
"page": 1,
"pageSize": 25,
"totalCount": 1,
"totalPages": 1
}
Step 4. Ask what is still missing for the month.
GET /v1/completeness?period=2026-09 HTTP/1.1
Host: api.syllevo.com
X-Api-Key: syl_live_examplekeynotreal000000000000
That is the whole loop. Everything else is more of the same shapes.
How to read these pages
- Start here, then read Authentication. Most first-day problems are credential or organization-scope problems, and one of them looks like a 404 but answers 401.
- Conventions has the rules that apply to every route: JSON shapes, dates, money, paging, filtering, rate limits, size limits, and the error envelope.
- Error codes lists every error code the API can return, what causes it, and what to do about it.
- The resource pages below each cover one route prefix. Every route in the contract appears on exactly one of them.
- Sections headed Internal describe behavior only a Syllevo engineer needs. You can skip them, and the pages on syllevo.com leave them out.
Roles and permissions are named the same way everywhere: Member, Admin, and Owner are
organization roles, and View, ManageDocuments, ManageSources, SendReminders,
ManageSettings, and TransmitInvoices are per-client permissions. TransmitInvoices can be
granted to an API key today, but no route checks it yet. Authentication
explains both.
Table of contents
| Page | What it covers |
|---|---|
| Authentication | Session tokens, API keys, organization scope, roles, and the 401 on a typo |
| Conventions | JSON, dates, money, paging, filters, limits, correlation ids, and versioning |
| Error codes | Every error code, its status, its cause, and the fix |
| API keys | Creating, listing, and revoking API keys |
| Organizations | The firm itself: profile of the organization, settings, stats, and avatars |
| Users | The signed-in person, their avatar, and the onboarding bootstrap call |
| Profiles | Client companies: create, update, archive, stats, and avatars |
| Documents | Documents that arrived, uploads, downloads, trash, and the review queue |
| Invoices | Invoices read out of documents, sales invoice import, and anomalies |
| Suppliers | Suppliers, the supplier directory, connections, merges, and VAT checks |
| Sources | Connected sources: inboxes, portal connectors, syncs, and unfiled email |
| e-Factura and SPV | ANAF e-Factura connections, enrollments, SPV messages, and sending consent |
| Reminders | Chasing clients: settings, sequences, manual sends, and contacts |
| Status and month-end completeness | Credential echo, month-end completeness, predictions, and digest preferences |
| Exports and handover packs | Organization and profile exports, and the month-end handover pack |
| Upload links | Upload links, and the public upload page they open |
| Billing | Package state, checkout, plan changes, portal, refunds, and closing |
| Team, roles, and invitations | Members, grants, roles, ownership, and invitations |
| Affiliates | The referral code and commissions |
| Search and company lookup | Cross-resource search and the Romanian company registry lookup |
| Webhooks | Inbound webhooks: email ingestion and Stripe |
| Changelog | What changed, and against which contract these pages were written |
What the API does not do
- It does not issue invoices. Syllevo collects them. There is no route that creates, numbers, or
issues an invoice, and there will not be one.
POST /v1/profiles/{profileId}/sales-invoicesimports a sale the business already issued in its own software, so the accountant sees sales next to purchases. See Invoices. Syllevo can send that issued invoice to SPV, as the exact XML file the business's software made, when the business allows it. It never writes, changes, or fixes the XML. See Invoices. - Routes that file something for good take an
Idempotency-Keyheader, so a retry after a dropped connection never files it twice. See Conventions. - There are no outbound webhooks. If you need to know when something arrived, poll
GET /v1/documentsorGET /v1/completeness. See Webhooks. - There is no cursor pagination. Paging is page and page size. See Conventions.
- Some features are gated and answer 402, 403, or 404 when they are off. Each page says which.