Skip to content
API pagesOverview

API documentation

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

  1. A Syllevo organization with an active package. Without one, most routes answer 402. See Conventions.
  2. An API key, created in the web app under Settings, then API keys. The key is shown once. See API keys.
  3. 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-invoices imports 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-Key header, 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/documents or GET /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.