Contracte
Administrează, trimite și semnează contracte într-un singur loc
Redactezi contracte din șabloane, le trimiți la semnat cu verificarea identității prin SMS sau email și urmărești fiecare semnătură și fiecare reînnoire.
Trimite primul contractCont gratuit, fără card.
EVIDENȚA CONTRACTELOR
Tot ce îți trebuie ca să ții contractele în ordine
Urmărești contractele, semnăturile și reînnoirile dintr-un singur dashboard.
Toate contractele sunt într-un singur tabel, cu filtre și căutare, așa că nimic nu se mai pierde prin emailuri sau prin foldere partajate.
Datele părților, categoriile și documentele conexe rămân legate automat de contract, așa că știi mereu tot ce ține de fiecare acord.
- Datele părților se completează automat din profilurile utilizatorilor
- Clasifici contractele: principal, amendament, supliment sau act adițional
- Filtrezi după direcție, status, categorie, dată sau parte
- Descarci, refolosești, editezi sau ștergi dintr-un clic
-
Un tabel pentru toate contractele
Le filtrezi după direcție, status, categorie, date și părți. Nu mai pierzi din vedere niciun acord.
-
Urmărirea semnăturilor
Marchezi cine trebuie să semneze, urmărești statusul semnăturilor și vezi dintr-o privire ce contracte mai așteaptă.
-
Legături între contracte
Legi amendamentele, suplimentele și actele adiționale de contractul principal și vezi clar cum se leagă documentele între ele.
-
Datele importante
Pe fiecare contract ai data emiterii, a expirării, a reînnoirii și a semnării, iar cu filtrele vezi ce urmează.
Ce versiune au semnat?
La majoritatea firmelor, contractele circulă încă așa: email, printare, scanare, rescanare. Asta înseamnă întârzieri, versiuni încurcate și nicio cale sigură de a verifica cine a semnat de fapt.
-
Contracte pierdute prin emailuri
Fără Enlivy: Cauți prin zeci de emailuri versiunea corectă a unui contract, fără să știi sigur care e exemplarul final semnat.
Cu Enlivy: Cauți orice contract într-un singur loc, iar exemplarul semnat e mereu la un clic distanță.
-
Semnături care se lasă așteptate
Fără Enlivy: Aștepți zile sau săptămâni ca să afli cine ce mai are de semnat, iar între timp afaceri importante stau pe loc.
Cu Enlivy: Trimiți la semnat cu reguli clare pentru fiecare parte și vezi statusul la zi al fiecărui semnatar.
-
Termene de reînnoire uitate
Fără Enlivy: Contractele expiră fără niciun avertisment, pentru că datele de reînnoire sunt notate într-un Excel, pe undeva, sau nicăieri.
Cu Enlivy: Data emiterii, a expirării și a reînnoirii sunt pe fiecare contract, iar cu filtrele vezi ce urmează.
-
Fără un istoric clar pentru audit
Fără Enlivy: Când apare o întrebare, nu ai o cale sigură să refaci istoricul unui contract, părțile sau amendamentele lui.
Cu Enlivy: Amendamentele rămân legate de contractul principal, iar pentru fiecare semnătură se păstrează dovada verificării și a citirii.
CREEZI SAU IMPORȚI
Două moduri de a lucra cu contractele
Scrii contractul de la zero sau încarci unul făcut în altă parte. Ai același control în ambele cazuri.
Scrii contracte profesionale direct în Enlivy, cu capitole modulare, un editor Markdown și șabloane pe care le refolosești.
Sau încarci contracte făcute în afara Enlivy, PDF-uri sau documente din orice sursă, ca să le urmărești, să le trimiți la semnat și să le păstrezi în același loc.
- Alegi expeditorii și destinatarii din echipa ta sau din afara ei
- Legi amendamentele și suplimentele de contractul principal
- Generezi automat PDF-uri profesionale
- Stabilești direcția: trimis de tine sau primit de la alții
-
Creezi de la zero
Scrii contracte direct în platformă, cu capitole modulare, un editor Markdown, șabloane refolosibile și o mențiune despre semnătură pe fiecare document.
-
Încarci din orice sursă
Aduci PDF-uri sau documente din orice sursă și le ai la un loc: le urmărești, le trimiți la semnat și le păstrezi.
-
Numerotare automată
Fiecare contract primește un număr unic din seria ta, cu prefixele pe care le stabilești tu.
-
Reguli de semnare pentru fiecare parte
Stabilești cine trebuie să semneze și cum își verifică identitatea fiecare parte, înainte să trimiți contractul.
-
De la ciornă la semnat complet
Urmărești fiecare contract de la ciornă până când e semnat de toate părțile, cu statusul semnăturilor clar la fiecare etapă.
-
Căutare rapidă
Filtrezi și cauți după detaliile contractului și găsești orice document în câteva secunde.
AVANTAJUL ENLIVY
Nu mai sări de la o aplicație la alta. Folosește un singur sistem.
| Cerință | Contracte Enlivy | Metode tradiționale |
|---|---|---|
| Crearea contractului | Editor cu șabloane, direct în platformă | Un editor de text separat, ca Word |
| Păstrarea documentelor | Un singur dashboard, cu căutare | Împrăștiate prin emailuri și drive-uri |
| Urmărirea semnăturilor | Status actualizat automat pentru fiecare parte | Reveniri manuale pe email |
| Controlul versiunilor | Legături clare cu contractul principal | Fișiere numite „final_v3_FINAL” |
| Date de reînnoire | Pe fiecare contract, cu filtre | Notate în calendar, sau nicăieri |
| Datele părților | Preluate automat din profiluri | Completate manual de fiecare dată |
| Căutare și filtrare | Filtrezi după status, dată, parte, categorie | Cauți după numele fișierelor și speri |
| Istoric și audit | Dovezile semnării, păstrate pentru fiecare semnătură | Reconstituit din emailuri |
STABILEȘTI REGULILE DE SEMNARE
Tu decizi cum își confirmă identitatea fiecare parte
Înainte să trimiți contractul, alegi cine semnează și cum își verifică identitatea fiecare semnatar: prin email, prin telefon (SMS) sau prin amândouă. Alegi nivelul după cât de sensibil e contractul.
- Verificare prin email Codul se verifică înainte ca semnătura să fie acceptată, nu după: nimeni nu semnează contractul până nu știm cine este.
Semnatarul primește pe adresa de email înregistrată un cod unic de 6 cifre, valabil 10 minute. Potrivit pentru acordurile obișnuite și pentru cele interne.
- Verificare prin telefon
Semnatarul primește prin SMS, pe numărul de telefon înregistrat, un cod de 6 cifre valabil 5 minute. Telefonul devine un factor în plus de verificare, pentru cerințe de securitate mai ridicate.
- Verificare combinată Trebuie trecute ambele verificări. Se folosește când semnătura trebuie să reziste și la o verificare ulterioară, de exemplu pentru un garant sau un martor.
Semnatarul confirmă mai întâi codul primit pe email, apoi pe cel primit prin SMS. Poate semna doar după ce trece de ambele verificări. Folosește-o pentru acorduri de valoare mare sau sensibile din punct de vedere juridic.
Cum funcționează semnarea
-
Fiecare semnatar primește linkul lui
Îi trimiți fiecărui semnatar un email personalizat, cu un link de semnare doar pentru el. Nu are nevoie de cont Enlivy și nu instalează nimic. Dă clic, își verifică identitatea prin metoda pe care ai ales-o și merge mai departe.
-
Citește, apoi semnează
După ce își verifică identitatea, semnatarul citește tot contractul. În partea de jos a ecranului, o bară arată cât a citit, iar butonul de semnare devine activ abia după ce a citit contractul integral. Apoi își desenează semnătura și bifează caseta „Înțeleg că acesta este un acord cu putere juridică”. Butonul de semnare se activează doar când ambele condiții sunt îndeplinite.
-
Un link către contractul semnat
După ce semnează, semnatarul primește un email cu un link către contract, pe care îl vede în portalul clienților. Când au semnat toate părțile, fiecare primește pe email un link către versiunea finală. Statusul semnăturilor și documentul final se actualizează în Enlivy, fără să mai arhivezi ceva de mână.
Oferte, contracte, facturi și plăți
Gata să-ți pui contractele în ordine?
Alătură-te echipelor care și-au simplificat evidența contractelor cu Enlivy.
Începi gratuit · Fără card · e-Factura ANAF pentru facturile către clienții din România
Experiența de semnare
Vezi exact ce vede semnatarul tău
Pașii reali ai semnării, de la început până la sfârșit: consimțământul, verificarea prin email și SMS, citirea documentului, apoi semnătura. Încearcă-i chiar tu: nu se trimite și nu se salvează nimic.
Primii pași, în câteva minute
Tot ce îți trebuie ca să-ți organizezi contractele, în câțiva pași rapizi.
-
Deschizi modulul Contracte
Alegi Contracte din meniul din stânga. Vezi toate contractele existente într-un tabel clar și ordonat.
-
Alegi cum adaugi contractul
Dai clic pe „Adaugă contract +” și alegi fie „Creează cu Enlivy”, pentru un contract nou, fie „Încărcat”, pentru un document făcut în afara platformei.
-
Completezi detaliile
Completezi informațiile contractului, alegi părțile, stabilești datele și adaugi conținutul în filele Informații, Părți, General, Introducere și Capitole.
-
Urmărești și administrezi
După ce îl adaugi, contractul apare în lista de contracte. De acolo urmărești semnăturile și termenele, editezi detaliile sau îl refolosești ca șablon pentru contractele viitoare.
DOCUMENTE LEGATE
Vezi ce documente sunt legate de un contract
Pagina contractului îți poate arăta documentele legate de el, dacă ai dreptul să le deschizi. De acolo ajungi direct la documentul comercial corespunzător, fără să-l cauți prin liste separate.
Referință API
Contracte prin API
Redactezi, trimiți, semnezi și urmărești contracte de la un capăt la altul, fără ca utilizatorii tăi să iasă vreodată din aplicația ta. API-ul pentru contracte acoperă tot ciclul de viață: compui contractul din capitole și părți, îl treci prin statusurile definite de tine, deschizi pentru fiecare semnatar o sesiune de semnare cu valoare legală și descarci documentul semnat, împreună cu dovezile de audit, care nu pot fi modificate fără să se observe.
Lucrezi cu patru resurse: contractele (documentul, capitolele și părțile lui), statusurile de contract (etapele pe care le configurezi tu), sesiunile de semnare (câte una pentru fiecare parte, cu verificare prin email sau SMS) și istoricul de audit (jurnalele de trimitere și dovezile de semnare). Exemplele de mai jos parcurg tot fluxul.
Listezi contractele cu paginare, filtre detaliate și căutare full-text. Filtrezi după status, expeditor, destinatar, direcție (inbound / outbound), categorie (core, amendment, addenda, supplement), sursă (internal / uploaded), limbă, contract părinte sau oricare dintre intervalele de date (issued_at, ends_at, created_at, updated_at). Poți include în răspuns datele legate.
/organizations/<organization_id>/contracts # filtrele sunt opționale și se pot combina
# trimiți q=... în loc de ids pentru căutare în tot textul
curl -G 'https://api.enlivy.com/organizations/<organization_id>/contracts' \
--data-urlencode 'page=1' \
--data-urlencode 'limit=20' \
--data-urlencode 'direction=outbound' \
--data-urlencode 'category=core' \
--data-urlencode 'include=contract_status,sender_user,receiver_user,contract_parties' \
--data-urlencode 'include_meta=navigation' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
// filtrele sunt opționale și se pot combina
// trimiți q=... în loc de ids pentru căutare în tot textul
const query = new URLSearchParams({
page: "1",
limit: "20",
direction: "outbound",
category: "core",
include: "contract_status,sender_user,receiver_user,contract_parties",
include_meta: "navigation",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contracts?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Obții un singur contract cu tot ce ține de el: capitolele, părțile, statusul curent, fișierul atașat și expeditorul / destinatarul.
/organizations/<organization_id>/contracts/<contract_id> # includes disponibile: organization, parent_contract, sender_user, receiver_user,
# file, contract_status, contract_chapters, contract_parties, contract_prefix
curl -G 'https://api.enlivy.com/organizations/<organization_id>/contracts/<contract_id>' \
--data-urlencode 'include=contract_chapters,contract_parties,contract_status' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractId = "<contract_id>";
// includes disponibile: organization, parent_contract, sender_user, receiver_user,
// file, contract_status, contract_chapters, contract_parties, contract_prefix
const query = new URLSearchParams({
include: "contract_chapters,contract_parties,contract_status",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contracts/${contractId}?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Construiești un contract dintr-un singur apel: metadatele, conținutul sub formă de capitole ordonate și părțile. O parte poate fi o persoană fizică sau o organizație și precizează cum este numită în document și dacă semnătura ei este obligatorie.
/organizations/<organization_id>/contracts curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/contracts' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"category": "core",
"source": "internal",
"direction": "outbound",
"organization_sender_user_id": "<org_user_sender_id>",
"organization_receiver_user_id": "<org_user_receiver_id>",
"organization_contract_status_id": "<contract_status_id>",
"organization_contract_prefix_id": "<contract_prefix_id>",
"title": "Master Services Agreement",
"sub_title": "2026 Engagement",
"locale": "en",
"issued_at": "2026-07-03 09:00:00",
"ends_at": "2027-07-03 09:00:00",
"content_introduction": "This agreement is entered into between the parties below.",
"content_signature_disclaimer": "By signing, each party agrees to the terms above.",
"chapters": [
{
"title": "Scope of Work",
"content": "<p>The Provider will deliver…</p>",
"order": 1
},
{
"title": "Payment Terms",
"content": "<p>Fees are due within 14 days…</p>",
"order": 2
}
],
"parties": [
{
"party_type": "organization",
"party_country_code": "RO",
"organization_name": "Acme Studio SRL",
"organization_type": "srl",
"first_name": "Jane",
"last_name": "Doe",
"role_in_organization": "Administrator",
"referenced_as_within_document": "the Provider",
"appears_as_party": true,
"is_signature_required": true,
"contact_email_address": "jane@acme.example",
"order": 0
},
{
"party_type": "individual",
"party_country_code": "RO",
"first_name": "John",
"last_name": "Smith",
"referenced_as_within_document": "the Client",
"appears_as_party": true,
"is_signature_required": true,
"contact_email_address": "john@example.com",
"order": 1
}
]
}' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contracts` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// core | amendment | addenda | supplement.
// amendment/addenda/supplement CER organization_contract_id -> un contract părinte "core".
category: "core",
// internal -> numerotat automat dintr-un prefix (organization_contract_prefix_id obligatoriu mai jos)
// uploaded -> trimiți tu `number` și poți seta `signed_by_all_parties_at`
source: "internal",
// outbound | inbound
direction: "outbound",
organization_sender_user_id: "<org_user_sender_id>",
organization_receiver_user_id: "<org_user_receiver_id>",
organization_contract_status_id: "<contract_status_id>",
// obligatoriu doar pentru internal + core; îl omiți pentru orice altă sursă sau categorie
organization_contract_prefix_id: "<contract_prefix_id>",
title: "Master Services Agreement",
sub_title: "2026 Engagement",
locale: "en",
issued_at: "2026-07-03 09:00:00",
ends_at: "2027-07-03 09:00:00",
content_introduction: "This agreement is entered into between the parties below.",
content_signature_disclaimer: "By signing, each party agrees to the terms above.",
chapters: [
{
title: "Scope of Work",
content: "<p>The Provider will deliver…</p>" ,
order: 1,
},
{
title: "Payment Terms",
content: "<p>Fees are due within 14 days…</p>" ,
order: 2,
},
],
parties: [
// se acceptă și blocurile JSON specifice țării, `information` (persoană) și `organization_information`
// (companie); forma lor e validată după schema țării.
{
// party_type, party_country_code, first_name, last_name sunt obligatorii pentru fiecare parte
// organization | individual
party_type: "organization",
party_country_code: "RO",
// părțile de tip organization CER în plus organization_name + organization_type
organization_name: "Acme Studio SRL",
// valoarea vine din datele de referință
organization_type: "srl",
first_name: "Jane",
last_name: "Doe",
role_in_organization: "Administrator",
referenced_as_within_document: "the Provider",
appears_as_party: true,
is_signature_required: true,
contact_email_address: "jane@acme.example",
order: 0,
},
{
party_type: "individual",
party_country_code: "RO",
first_name: "John",
last_name: "Smith",
referenced_as_within_document: "the Client",
appears_as_party: true,
is_signature_required: true,
contact_email_address: "john@example.com",
order: 1,
},
],
}),
}).then((response) => response.json());Actualizezi metadatele unui contract, îl muți în alt status, îi ajustezi capitolele sau îi modifici părțile. Trimiți doar ce vrei să schimbi.
/organizations/<organization_id>/contracts/<contract_id> curl -X PUT 'https://api.enlivy.com/organizations/<organization_id>/contracts/<contract_id>' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"organization_contract_status_id": "<next_status_id>",
"sub_title": "2026 Engagement (revised)",
"ends_at": "2027-12-31 23:59:59"
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractId = "<contract_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contracts/${contractId}` , {
method: "PUT",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// actualizare parțială: se modifică doar câmpurile trimise
organization_contract_status_id: "<next_status_id>",
sub_title: "2026 Engagement (revised)",
ends_at: "2027-12-31 23:59:59",
}),
}).then((response) => response.json());Generezi și descarci contractul ca PDF, exact documentul pe care îl văd și celelalte părți.
/organizations/<organization_id>/contracts/<contract_id>/download # primești un fișier: îl citești ca blob, nu ca JSON
curl 'https://api.enlivy.com/organizations/<organization_id>/contracts/<contract_id>/download' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
--remote-name --remote-header-nameconst baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractId = "<contract_id>";
// primești un fișier: îl citești ca blob, nu ca JSON
const pdf = await fetch(`${baseUrl}/organizations/${organizationId}/contracts/${contractId}/download` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => response.blob());Ștergi un contract prin soft delete, așa că îl poți restaura ulterior.
/organizations/<organization_id>/contracts/<contract_id> # ștergere reversibilă; restaurezi cu POST /contracts/restore/{contractId}
curl -X DELETE 'https://api.enlivy.com/organizations/<organization_id>/contracts/<contract_id>' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractId = "<contract_id>";
// ștergere reversibilă; restaurezi cu POST /contracts/restore/{contractId}
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contracts/${contractId}` , {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Contractele trec prin etapele tale, nu printr-un flux fix. Fiecare status corespunde unei stări din ciclul de viață (draft, action_required, accepted, breach sau terminated) și are etichete traduse, o culoare și un număr de ordine. Un status se aplică pe direcția inbound, outbound sau pe oricare (any). Le listezi ca să construiești un panou sau să alimentezi automatizări.
/organizations/<organization_id>/contract-statuses curl -G 'https://api.enlivy.com/organizations/<organization_id>/contract-statuses' \
--data-urlencode 'page=1' \
--data-urlencode 'limit=50' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const query = new URLSearchParams({
page: "1",
limit: "50",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-statuses?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Definești o etapă nouă. Etichetele și descrierile se trimit pe limbi (câte un text pentru fiecare limbă), contract_state leagă etapa de o stare din ciclul de viață și poți muta automat contractul în alt status după ce o acțiune reușește.
/organizations/<organization_id>/contract-statuses curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/contract-statuses' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"title_lang_map": {
"en": "Awaiting Signature",
"ro": "În așteptarea semnării"
},
"description_lang_map": {
"en": "Sent to all parties for signing.",
"ro": "Trimis către toate părțile pentru semnare."
},
"contract_state": "action_required",
"direction": "any",
"order": 3,
"rgba_color_code": "rgba(59, 130, 246, 1)"
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-statuses` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// hărți pe limbi, nu texte simple
title_lang_map: {
en: "Awaiting Signature",
ro: "În așteptarea semnării",
},
description_lang_map: {
en: "Sent to all parties for signing.",
ro: "Trimis către toate părțile pentru semnare.",
},
// draft | action_required | accepted | breach | terminated
contract_state: "action_required",
// inbound | outbound | any
direction: "any",
// order este unic în organizație: alegi un loc liber
// sau reordonezi etapele existente cu PUT /contract-statuses/reorder
order: 3,
rgba_color_code: "rgba(59, 130, 246, 1)",
}),
}).then((response) => response.json());Creezi câte o sesiune de semnare pentru fiecare parte care trebuie să semneze. Alegi tipurile de semnătură acceptate (desenată, bifă, fișier clasic, fișier electronic), confirmările obligatorii (email, telefon, acceptarea valorii legale a semnăturii) și data de expirare. Cu signature_source user_flow, Enlivy găzduiește semnarea, cu pași ghidați pentru semnatar, și returnează un URL de semnare cu token.
/organizations/<organization_id>/contract-signatures curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/contract-signatures' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"organization_contract_id": "<contract_id>",
"organization_contract_party_id": "<party_id>",
"signature_source": "user_flow",
"sign_session_signature_types": [
"draw",
"checkbox"
],
"sign_session_required_confirmations": [
"email",
"legally_binding"
],
"expires_at": "2026-07-17 23:59:59"
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-signatures` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
organization_contract_id: "<contract_id>",
// o singură sesiune activă pe parte; organization_contract_party_id este unic
organization_contract_party_id: "<party_id>",
// user_flow -> Enlivy găzduiește semnarea (linkul vine din sign_session_url)
// admin_panel -> înregistrezi tu semnătura și poți trimite is_signed / signature_drawing / signed_contract
signature_source: "user_flow",
sign_session_signature_types: [
"draw",
// draw | checkbox | file_classic | file_electronic
"checkbox",
],
sign_session_required_confirmations: [
"email",
// email | phone | legally_binding
"legally_binding",
],
expires_at: "2026-07-17 23:59:59",
}),
}).then((response) => response.json());Trimiți sesiunea de semnare părții respective prin email sau SMS, cu un mesaj personalizat opțional. Fiecare trimitere rămâne în jurnalul de notificări, pentru audit.
/organizations/<organization_id>/contract-signatures/<contract_signature_id>/send curl -X POST 'https://api.enlivy.com/organizations/<organization_id>/contract-signatures/<contract_signature_id>/send' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"method": "email",
"message": "Please review and sign the agreement by Friday."
}'const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractSignatureId = "<contract_signature_id>";
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-signatures/${contractSignatureId}/send` , {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
"Content-Type": "application/json" ,
},
body: JSON.stringify({
// email | sms
method: "email",
message: "Please review and sign the agreement by Friday.",
}),
}).then((response) => response.json());Verifici periodic o sesiune: statusul, dacă e semnată, când expiră și ce dovezi există. Incluzi sign_session_url ca să primești linkul de semnare găzduit de Enlivy, pe care i-l dai semnatarului.
/organizations/<organization_id>/contract-signatures/<contract_signature_id> # sign_session_url întoarce linkul găzduit pe care îl dai semnatarului.
# status este unul dintre: pending | sent | completed | expired | void
curl -G 'https://api.enlivy.com/organizations/<organization_id>/contract-signatures/<contract_signature_id>' \
--data-urlencode 'include=sign_session_url,organization_contract' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractSignatureId = "<contract_signature_id>";
// sign_session_url întoarce linkul găzduit pe care îl dai semnatarului.
// status este unul dintre: pending | sent | completed | expired | void
const query = new URLSearchParams({
include: "sign_session_url,organization_contract",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-signatures/${contractSignatureId}?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Listezi toate sesiunile de semnare, opțional doar pentru un contract. E cel mai rapid mod de a vedea, pentru toate părțile, cine a semnat și cine încă nu.
/organizations/<organization_id>/contract-signatures # omiți organization_contract_id ca să vezi sesiunile tuturor contractelor
curl -G 'https://api.enlivy.com/organizations/<organization_id>/contract-signatures' \
--data-urlencode 'organization_contract_id=<contract_id>' \
--data-urlencode 'include=sign_session_url' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
-H 'Accept: application/json' const baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
// omiți organization_contract_id ca să vezi sesiunile tuturor contractelor
const query = new URLSearchParams({
organization_contract_id: "<contract_id>",
include: "sign_session_url",
});
const result = await fetch(`${baseUrl}/organizations/${organizationId}/contract-signatures?${query}` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json" ,
},
}).then((response) => response.json());Descarci pachetul de dovezi (autentificarea, consimțământul și datele biometrice ale semnăturii, captate la semnare), protejat astfel încât orice modificare să se vadă. Îl folosești pentru conformitate și în caz de dispută.
/organizations/<organization_id>/contracts/<contract_id>/download-evidence # disponibil și pe fiecare sesiune: /contract-signatures/{signatureId}/download-evidence
curl 'https://api.enlivy.com/organizations/<organization_id>/contracts/<contract_id>/download-evidence' \
-H "Authorization: Bearer $ENLIVY_API_TOKEN" \
--remote-name --remote-header-nameconst baseUrl = "https://api.enlivy.com" ;
const token = process.env.ENLIVY_API_TOKEN;
const organizationId = "<organization_id>";
const contractId = "<contract_id>";
// disponibil și pe fiecare sesiune: /contract-signatures/{signatureId}/download-evidence
const evidence = await fetch(`${baseUrl}/organizations/${organizationId}/contracts/${contractId}/download-evidence` , {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
}).then((response) => response.blob());Unde se potrivește
Face parte din aceste soluții
- Agenții și studiouri Parte de bază Generate din șablonul tău, cu datele clientului, și semnate online, cu un cod pe email sau prin SMS, dacă îl ceri. Vezi soluția
- Autori de cursuri Parte de bază Contracte de înscriere semnate online, cu actele adiționale în același loc. Vezi soluția
- Echipe de vânzări Parte de bază Generate din oferta acceptată și semnate online, cu un cod pe email sau prin SMS, dacă îl ceri. Vezi soluția
- Facturare lunară Opțional Adaugă un contract semnat înainte de prima plată. Versiunea semnată rămâne în fișa clientului. Vezi soluția
Funcționează împreună cu
- Propuneri Ofertezi munca în detaliu, trimiți propunerea clientului și urmărești cum trece prin acceptare, semnare și plată, acolo unde e cazul.
- Pipeline de vânzări Afli ce oportunități merg mai departe, recitești discuția înainte să revii la client și ții propunerile aproape de vânzare.
- Preluare documente Pornești de la un document, alegi unde îi e locul și verifici formularul. O citire AI, dacă o ceri, poate sugera detaliile documentului.
- Sarcini Păstrezi munca echipei lângă factura, proiectul sau prospectul de care ține. Modulul Sarcini e inclus în orice organizație, fără cost suplimentar: nu plătești un abonament separat și nu ai limită de sarcini.
- Utilizatori În Enlivy îți adaptezi ușor rolurile și permisiunile pentru clienți, parteneri, contabili și administratori, ca accesul fiecăruia să fie sigur și eficient.
- Portal clienți Un portal self-service cu logoul firmei tale, pe domeniul tău dacă îl adaugi, în care clienții acceptă singuri propuneri, plătesc facturi, își administrează abonamentele și semnează contracte. Fiecare acțiune apare în Enlivy, pe fișa clientului.
- MCP Conectezi Enlivy la Claude, ChatGPT, Cursor sau orice alt asistent AI prin MCP. Întrebi despre facturi, contracte și pipeline și rezolvi lucruri concrete, în siguranță, fără să depășești ce poate face deja contul tău.