API
API documentation
The registrul.md API returns company data for the Republic of Moldova. Access requires an API key and an active Business or Agency subscription.
Who gets access
Only accounts with an active Business or Agency plan can create keys and call /api/v1/* endpoints. Free and Starter plans do not include API access.
- Business — medium rate limit (60/min)
- Agency — high rate limit (300/min)
Creating an API key
When a Business/Agency subscription activates, a key is created automatically (if you do not already have one). Only one active key is allowed — to rotate, revoke or use Regenerate. The full key (reg_ prefix) is shown only once.
Authentication
Send the key with either of these headers (one is enough):
Authorization: Bearer reg_…
X-Api-Key: reg_…Keys always start with reg_. Without a valid key, the request is rejected with 401.
Endpoint
Base URL: https://registrul.md
GET /api/v1/company/{idno}
Replace {idno} with the company IDNO (digits only, at least 10). The response includes core fields, founders, administrators, and CAEM codes.
curl examples
curl -s \
-H "Authorization: Bearer reg_YOUR_API_KEY" \
"https://registrul.md/api/v1/company/1025600022949"curl -s \
-H "X-Api-Key: reg_YOUR_API_KEY" \
"https://registrul.md/api/v1/company/1025600022949"Example JSON response
Actual response shape (founders / admins / caem vary by company):
{
"idno": "1025600022949",
"name": "Societatea cu Răspundere Limitată \"FIX MOTORS GO\"",
"legal_form": "S.R.L.",
"status": "activa",
"reg_date": "2025-07-04",
"address": "MD-2002, CHIȘINĂU BOTANICA, mun. Chișinău, Plaiului, 128, ap.(of.) 2",
"region": "110",
"capital": "…",
"vat_payer": false,
"caem_main": "5320",
"url": "https://registrul.md/companie/…",
"founders": [
{ "name": "…", "share": "100,00%", "type": "persoana_fizica" }
],
"admins": ["…"],
"caem": [
{ "code": "5320", "label": "…", "main": true }
]
}Rate limits
Limits apply per API key over a rolling 60-second window. The effective tier follows the active plan (not the value stored on the key).
| Plan | Tier | Limit |
|---|---|---|
| Business | medium | 60 requests / minute |
| Agency | high | 300 requests / minute |
On success, the response includes X-RateLimit-Limit and X-RateLimit-Tier. On 429: Retry-After: 60.
Error codes
| HTTP | error | Meaning |
|---|---|---|
| 401 | missing_or_invalid_api_key | Missing, invalid, or revoked API key |
| 403 | no_active_api_plan | No active API plan (Business/Agency) |
| 400 | invalid_idno | Invalid IDNO (too short / not enough digits) |
| 404 | not_found | Company not found |
| 429 | rate_limited | Rate limit exceeded — wait and retry |
Security
- The full key is shown only once at creation — copy it immediately.
- Revoke or regenerate a compromised key immediately from /cont/api.
- Do not commit keys to git, embed them in public frontends, or share them in chats.
- The public widget (/api/widget/…) is separate and does not use API keys — do not confuse it with /api/v1/.