Developer center
Make the first request. Understand the final state.
Start with a verified synthetic sandbox, then use the same request identity, idempotency, logs, usage, webhooks, and evidence model as the integration grows.
Quickstart
One session from signup to an inspectable result.
- 01Verify your email and create the organization.
- 02Copy the first scoped key when it is revealed once.
- 03Send a simplified or standard invoice with an idempotency key.
- 04Inspect the request ID, XML, QR, logs, usage, and lifecycle state.
- 05Register a signed webhook and test key revocation/replacement.
First sandbox request
Create a simplified invoice
curl https://api.technominds.sa/v1/fatoorah/invoices \
-H "Authorization: Bearer $TECHNOMINDS_API_KEY" \
-H "Idempotency-Key: inv-demo-001" \
-H "Content-Type: application/json" \
-d '{"invoice_type":"simplified","currency":"SAR","total":115}'Synthetic response
201 created{
"id": "inv_sbx_01J...",
"state": "generated",
"provider_mode": "technominds_synthetic",
"production_access": false,
"request_id": "req_01J...",
"artifacts": {
"xml": "ready",
"qr": "ready"
}
}Create sandbox and run it →Get started
Fatoorah quickstart
Create a TechnoMinds Fatoorah sandbox and make your first synthetic invoice request.
Read guide →
Authentication
Use scoped developer keys without exposing them to browser runtime or logs.
Read guide →
Environments
Keep local, test, staging, sandbox, and production credentials and behavior separate.
Read guide →
API reference
Inspect the canonical OpenAPI contract and interactive route reference.
Read guide →
Build in your stack
Fatoorah API with PHP and Laravel
Make an idempotent synthetic Fatoorah request from a Laravel service and keep permanent credentials on the server.
Read guide →
Fatoorah API with Node.js and TypeScript
Call the synthetic Fatoorah API from a typed Node.js service with explicit request identity and error handling.
Read guide →
Fatoorah API with Python
Send a bounded synthetic Fatoorah request from Python and retain the correlation needed for reconciliation.
Read guide →
Fatoorah API with .NET
Integrate the synthetic Fatoorah API through HttpClientFactory with server-side credentials and stable operation identity.
Read guide →
Operate safely
Idempotency
Prevent repeated client or worker attempts from creating duplicate effects.
Read guide →
Retries
Retry only when the operation state says another attempt is safe.
Read guide →
Unknown outcomes
Represent uncertainty explicitly instead of guessing success or failure.
Read guide →
Errors
Design around actionable error codes, request IDs, and retry classification.
Read guide →
Build for production
Environment boundary
The public sandbox is synthetic by design.
Examples show the TechnoMinds contract and local product behavior. They do not prove external ZATCA reporting or clearance, regulatory acceptance, production credentials, or an official-provider relationship.
