Programmatic access to Addlify Finance and Legal for Enterprise customers. Bulk contract scanning, ERP integration, compliance audit log.
All Enterprise API endpoints authenticate via your license key or a scoped API key generated from your account dashboard. Always send keys over HTTPS — never in URL query strings for production scripts (use POST body instead).
| Endpoint | Limit | Window |
|---|---|---|
bulk-scan.php | 200 requests | per hour, per license |
erp-api.php | 500 requests | per hour, per license |
audit.php (GET) | 30 requests | per hour, per IP |
Exceeding limits returns HTTP 429 with JSON {"success": false, "message": "Prea multe cereri"}.
Scans one or multiple contract texts against Addlify Legal rule packs (UK + Romanian law). Returns issues with article/section citations and suggested rewordings.
| Field | Required | Description |
|---|---|---|
license_key | Required | Your Enterprise Legal license key (or scoped API key with legal_bulk_scan permission) |
text | Required* | Contract text (single scan). Max 200 KB. |
text[] | Optional* | Array of contract texts (bulk scan, max 10 per request). Use instead of text. |
lang | Optional | ro (default), en, or auto (heuristic detection) |
# cURL — scan a Romanian contract clause
curl -X POST https://addlify.uk/api/legal/bulk-scan.php \
-d "license_key=LEGAL-XXXX-XXXX-XXXX-XXXX" \
--data-urlencode "text=Furnizorul își rezervă dreptul de a modifica unilateral tarifele oricând, fără preaviz." \
-d "lang=ro"
import requests
clauses = [
"Furnizorul își rezervă dreptul de a modifica unilateral...",
"The Provider reserves the right to unilaterally modify...",
]
r = requests.post(
"https://addlify.uk/api/legal/bulk-scan.php",
data={
"license_key": "LEGAL-XXXX-XXXX-XXXX-XXXX",
"text[]": clauses,
"lang": "auto",
},
timeout=30,
)
result = r.json()
for idx, scan in enumerate(result["scans"]):
print(f"Clause {idx}: {len(scan['issues'])} issues")
for issue in scan["issues"]:
print(f" [{issue['severity']}] {issue['title']}")
print(f" Law: {issue['lawRef']}")
print(f" Suggestion: {issue['suggestion'][:80]}...")
{
"success": true,
"scans": [
{
"text_index": 0,
"issues": [
{
"ruleId": "B2C-UNILATERAL-MOD-001",
"severity": "ERROR", // ERROR | WARNING | INFO
"category": "clauza_abuziva",
"lawRef": "Legea 193/2000, Anexa lit. b)",
"title": "Modificare unilaterală fără justificare",
"description": "Profesionistul își rezervă...",
"suggestion": "Restrânge dreptul de modificare...",
"matchText": "...modifica unilateral...",
"startOffset": 42,
"endOffset": 88
}
]
}
],
"meta": {
"total_rules_evaluated": 42,
"duration_ms": 87
}
}
ERP integration for Addlify Finance: programmatic e-Factura UBL submission, CIF/VAT validation against ANAF, SAF-T D406 generation, deadline lookup. Designed for accounting software vendors and large firms with custom ERPs.
license_key in production scripts — use a scoped, revocable key.
| Field | Required | Description |
|---|---|---|
api_key | Required | Generated API key (recommended) OR your Enterprise license_key |
action | Required | One of: cif_lookup, efactura_send, saft_generate, deadline_list |
... | — | Action-specific params (see below per action) |
curl -X POST https://addlify.uk/api/finance/erp-api.php \
-d "api_key=ak_live_..." \
-d "action=cif_lookup" \
-d "cif=RO12345678"
{
"success": true,
"cif": "12345678",
"valid": true,
"name": "FIRMA EXEMPLU SRL",
"address": "Str. Exemplu 1, București",
"vat_payer": true,
"date_registered": "2010-03-15",
"checked_at": "2026-05-09T14:22:00Z"
}
Compliance audit log per license. Tracks scan events, firm clause CRUD, rule pack changes, brand updates, bulk scan API calls, device register/disconnect. Renders as an HTML page (designed for browser viewing); pass ?format=json for programmatic access.
| Field | Required | Description |
|---|---|---|
key | Required | Your license key (Cabinet or Enterprise) |
from | Optional | Start date YYYY-MM-DD (default: 30 days ago) |
to | Optional | End date YYYY-MM-DD (default: today) |
format | Optional | html (default) or json |
curl "https://addlify.uk/api/legal/audit.php?key=LEGAL-XXX&from=2026-01-01&to=2026-05-09&format=json"
{
"success": true,
"license_key": "LEGAL-XXX...",
"range": { "from": "2026-01-01", "to": "2026-05-09" },
"events": [
{
"action": "legal_scan",
"created_at": "2026-05-09T13:42:11Z",
"ip": "86.123.45.67",
"details": { "issues_found": 3, "document_chars": 12450 }
},
{
"action": "legal_firm_pack_saved",
"created_at": "2026-05-08T10:15:00Z",
"ip": "86.123.45.67",
"details": { "pack": "firm-internal-checks", "size": 4521 }
}
]
}
| HTTP | Meaning | Common cause |
|---|---|---|
400 | Bad request | Missing required parameters, malformed input |
401 | Unauthorized | API key invalid, revoked, or expired |
403 | Forbidden | Plan doesn't include this endpoint, or key scope insufficient |
404 | Not found | License key doesn't exist |
413 | Payload too large | Text exceeds 200 KB, or bulk request > 10 items |
429 | Too many requests | Rate limit hit (200/h scan, 500/h ERP, 30/h audit) |
500 | Server error | Transient — retry with exponential backoff |
All errors return JSON with {"success": false, "message": "...", "code": "..."}.