Send documents for eIDAS qualified electronic signature and automate your document workflows with a clean REST API. Create a key and make your first call in minutes.
OAuth2 authentication. JSON in, JSON out. OpenAPI 3.1 spec.
0 € API fee
No platform fee, no subscription, no sales call. The API is on for every Simplifi company account, and it stays free.
Full self-service
A company admin creates the API client in API Settings and gets the credentials on the spot. Nothing to apply for, nobody to wait on.
Same cost as the app
API usage draws from the same credits as your regular account, at the
same prices: envelopes, signature packs, one-sided documents. No API
premium, no surprise invoice; if a balance runs out you get a stable
insufficient_*_balance error.
One API, two principals. Pick the one that fits each call, or combine them in the same integration.
You send the document. The recipient signs it with their own account.
The simplest path. Your software uploads a PDF, adds the signers and sends. Each counterparty signs on the Simplifi platform with their own account and their own qualified certificate. You collect the executed PDF. No enrollment, no certificate management on your side. Find it in the API reference under Send for signature (its product name is Sign with Simplifi).
client_credentials access tokenPOST /publicapi/v1/documents with your PDFsigning_urlYour software acts as one of your own users, with their consent.
Back-office automation on a real user's account. A person at your company who already has a Simplifi account and a qualified certificate authorizes your application once via OAuth. Your software then holds an offline token for them and drives their normal document workflows machine-to-machine, including signing with the user's own certificate by supplying their current authenticator (TOTP) code.
From zero to an authenticated request in three steps. No sandbox sign-up, no approval queue.
A company admin opens
API Settings
in the Simplifi app and creates the client. You get your
oauth_client_id and client_secret on the
spot.
Standard OAuth2 client_credentials against our
identity server.
curl -X POST https://auth.simplifi.ro/realms/Simplifi/protocol/openid-connect/token \ -d "grant_type=client_credentials" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_SECRET"
Upload a PDF and get back its uuid. From here: add
signers, place the signature boxes and send. The
reference
covers each step.
curl -X POST https://api.simplifi.ro/publicapi/v1/documents \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "First contract",
"signature_level": "QUALIFIED",
"pdf_base64": "'"$(base64 -w0 contract.pdf)"'"
}'
Already on Simplifi? The developer portal in the app has a personalized Postman environment, code samples and the full dev pack.
For company (send-for-signature) integrations: configure endpoints in API Settings and Simplifi calls you back. Every delivery is signed, so you can verify it came from us.
Fired for every document your company integration creates through the API, as each signer acts and the document completes or gets rejected.
document.signer.signed
document.completed
document.rejected
Know before credits run dry, and test your endpoint wiring with one
API call. Every payload carries an
X-Simplifi-Signature: sha256={hmac} header (HMAC-SHA256 of
the raw body with your endpoint's signing secret).
allowance.low
allowance.exhausted
webhook.test
Verify deliveries with ready-made code: PHP · Node.js · Python
The operational fine print, stated upfront.
Budgets are per API identity, never per IP address, so shared office
NAT or cloud egress does not throttle you. Every authenticated
response reports your current budget in headers, and going over
returns 429 with a Retry-After. Pace
yourself off RateLimit-Remaining and you will never see
one. Integration tokens get 1800 requests a minute, end-user tokens
600, and a heavy integrator's ceiling can be raised per client on
request.
RateLimit-Limit
RateLimit-Remaining
RateLimit-Reset
The API is path-versioned: everything documented here lives under
/publicapi/v1. Changes within v1 are additive: new
endpoints, new optional fields, new webhook event types. Build
clients that ignore unknown fields and they will not break.
Anything incompatible ships as a new version path with a migration
window, and deprecations are announced in the
API reference
before they take effect.
/publicapi/v1