Documentație API
API-ul REST v1 listează și creează oferte, exportă XML pentru e-Factura și înregistrează webhooks, ca să legi Katalog de ERP-ul sau CRM-ul tău. Cererile folosesc HTTPS, JSON și o cheie API.
Bază API: https://katalog.live/api/v1Chei API în zona de administrare
Introducere
Toate cererile merg prin HTTPS, iar corpurile cererilor și ale răspunsurilor sunt JSON (UTF-8), cu excepția exportului e-Factura, care poate returna XML. O cerere eșuată primește un cod HTTP de eroare (4xx sau 5xx) și un corp de forma { "success": false, "error": "..." }.
Exemplele de mai jos folosesc o cheie de exemplu. Înlocuiește-o cu cheia ta și nu o pune niciodată în cod public sau în adrese URL.
Autentificare
Trimite cheia în antetul Authorization ca token Bearer (sau în antetul x-api-key). Cheile se creează, se rotesc și se revocă din zona de administrare. Cheia se afișează o singură dată, la creare; în baza de date se păstrează doar un hash. O cheie poate avea acces complet sau doar de citire; cererile de scriere cu o cheie de citire primesc 403.
Authorization: Bearer kat_live_sec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Listare oferte
GET/v1/quotes
Returnează ofertele organizației tale. Parametri opționali: status (draft, sent, viewed, accepted, rejected), cui (CUI-ul clientului), limit (implicit 50, maximum 100) și offset. Răspunsul conține total, limit, offset și lista data. Pentru o singură ofertă folosește GET /v1/quotes/{id}.
curl "https://katalog.live/api/v1/quotes?status=sent&limit=20" \ -H "Authorization: Bearer kat_live_sec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Creare ofertă
POST/v1/quotes
Creează o ofertă în starea draft. Câmpuri obligatorii: client_cui și items (listă nevidă; fiecare linie are title, quantity, unit_price fără TVA și opțional vat_rate, implicit 21). Dacă CUI-ul nu corespunde unui client existent, datele firmei se caută în ANAF. Totalurile se calculează pe server, cu rotunjire la 2 zecimale.
curl -X POST https://katalog.live/api/v1/quotes \
-H "Authorization: Bearer kat_live_sec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"client_cui": "RO34567890",
"title": "Propunere servicii IT 2026",
"currency": "RON",
"payment_term_days": 30,
"discount_type": "percentage",
"discount_value": 5,
"items": [
{ "title": "Dezvoltare platformă web", "quantity": 1, "unit_price": 8500, "vat_rate": 21 },
{ "title": "Abonament mentenanță", "quantity": 12, "unit_price": 450, "vat_rate": 21 }
]
}'{
"id": "kat_quot_77289df1a0b3c4d5",
"quote_number": "KAT-2026-0841",
"status": "draft",
"portal_url": "https://katalog.live/q/kat_quot_77289df1a0b3c4d5",
"client": { "cui": "RO34567890", "name": "TECHSOLVENT SOLUTIONS S.R.L.", "is_vat_payer": true, "address": "Iași" },
"subtotal_net": 13900,
"discount_amount": 695,
"taxable_amount": 13205,
"vat_breakdown": [{ "rate": 21, "base": 13205, "vat_amount": 2773.05 }],
"total_gross": 15978.05,
"created_at": "2026-10-07T12:00:00Z"
}Export e-Factura
POST/v1/quotes/{id}/export-efactura
Generează fișierul XML în formatul e-Factura (UBL 2.1, CIUS-RO) pentru o ofertă. Cu antetul Accept: application/xml primești direct fișierul; altfel primești un răspuns JSON care conține XML-ul. Validarea și transmiterea la ANAF se fac din factură, în aplicație.
curl -X POST https://katalog.live/api/v1/quotes/kat_quot_77289df1a0b3c4d5/export-efactura \ -H "Authorization: Bearer kat_live_sec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \ -H "Accept: application/xml" \ -o efactura.xml
Webhooks
POST/v1/webhooks
Înregistrează o adresă HTTPS care să primească evenimente. Evenimentele disponibile sunt quote.viewed, quote.accepted și quote.rejected. La înregistrare primești un secret de semnare, afișat o singură dată: păstrează-l. GET /v1/webhooks listează webhook-urile înregistrate, fără secret.
curl -X POST https://katalog.live/api/v1/webhooks \
-H "Authorization: Bearer kat_live_sec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.compania-ta.ro/webhooks/katalog",
"events": ["quote.accepted", "quote.viewed", "quote.rejected"]
}'