The sandbox environment of JAAK It allows you to develop and test your integration without affecting actual data or incurring costs. It's a completely separate production environment.
URLs of environments
Identity Verification (KYC) and official consultations
| Environment | Base URL |
|---|---|
| Sandbox | https://api.sandbox.jaak.ai |
| Production | https://services.api.jaak.ai |
Frontent KYC (white-label)
| Environment | URL |
|---|---|
| Sandbox | https://kyc.sandbox.jaak.ai |
| Production | https://identity.jaak.ai |
Digital Signature (Signa)
| Environment | Base URL |
|---|---|
| Sandbox | https://signa.sandbox.jaak.ai |
| Production | https://signa.jaak.ai |
Platform JAAK (dashboard)
| Environment | URL |
|---|---|
| Sandbox | https://platform.sandbox.jaak.ai |
| Production | https://platform.jaak.ai |
Credentials
Sandbox and production credentials are independent: API Sandbox-generated key doesn't work in production and vice versa.
- Retiring at Platform JAAK from the environment you're using.
- Go to Adjustments → API keys.
- Press New generation API keyput a descriptive name and choose a valid name.
- Copy and save the API Key at once - you can't get her back later.
The API Key's been sent as head Authorization: Bearer <api-key-jwt> initial flow calls (login creation) KYC).
Do not mix environments
If you use a API Production Key api.sandbox.jaak.ai (or upside down), you'll get 401 Unauthorized. Make sure that the base URL and API Key corresponds to the same environment.
Test Flow KYC Sandbox
The complete flow (create session → short key → capture → completion) works as well as production. JAAK KYC track API, replacing the base URL with https://api.sandbox.jaak.ai.
curl -X POST https://api.sandbox.jaak.ai/api/v1/kyc/flow \
-H "Authorization: Bearer $JAAK_SANDBOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Juan Pérez",
"flow": "Sandbox-Test",
"redirectUrl": "",
"countryDocument": "MEX",
"flowType": "KYC",
"verificationType": "",
"verification": { "EMAIL": "", "SMS": "", "WHATSAPP": "" }
}'
The answer includes a sessionUrl that you can open up in the browser to complete the flow manually, or continue to consume endpoints API (step 2).
Replay concrete scenarios (approved / rejected / pending / errors)
At sandbox you can force any stage of the flow by sending a requestId with conventional prefix. That's useful to build automated tests that cover not only the happy path but also challenges and errors.
Consultation Sandbox Request IDs catalogue for a complete list of available prefixes.
Webhooks in Sandbox
The sandbox sends real webhooks to the URL you set up at Platform JAAK → Company → WebhooksFor local development you can use:
- webhoo.site He's been digging real-time webhooks with no code.
- ngrok - put your localhost online with HTTPS.
Payload details, authentication leaders and bug conduct: Webhooks.
Differences with production
| Characteristic | Sandbox | Production |
|---|---|---|
| Data | Test | Reals |
| Costs | No cost | According to your plan |
| Validation against best name INE / RENAPO / SAT | Real (public service consultation) | Real |
| Liveness and document monitoring | Full models | Full models |
| Request IDs catalogue | Available (forcing scenarios) | Not applicable |
| SLA | Best efficiency | Guarantees |
| Support | Priority |
Sandbox uses the same models as AI
Unlike other "simulated" sandboxes, JAAK It operates the same vision models and official services as production. Rejections by liveness or altered document are calculated as well. The only thing that's different is that the data aren't persisting for commercial audit and the request IDs catalogue allows you to force concrete responses.
Migrate to production
When you're ready to go to production:
- Generates production credentials from Platform JAAK production → Adjustments → API The credentials are independent.
- Change base URLs in your integration:
api.sandbox.jaak.ai→services.api.jaak.aikyc.sandbox.jaak.ai→identity.jaak.aisigna.sandbox.jaak.ai→signa.jaak.aiplatform.sandbox.jaak.ai→platform.jaak.ai
- Updating the web gain URL at production platform (should be HTTPS and publicly accessible).
- Test end-to-end flow with your own actual document before launch.
Use environment variables
Keep JAAK_API_BASE_URL and JAAK_API_KEY in environment variables and changes the value by environment, rather than hardcore URLs. It saves you mistakes while promoting production.
good practice
- Separate environments at your own system (development / stacking / production) with sandbox / sandbox / production of JAAK respectively.
- Automated tests at CI using the requested ID catalogue prefixes to cover unhappy roads.
- Do not re-use actual personal data on sandboxand even for internal evidence - data are evidence by definition.
troubleshooting
"401 Unauthorized" in sandbox
- He verifies that API Key corresponds to the environment (sandbox vs. production).
- Confirms that the head is
Authorization: Bearer <api-key>(NoX-API-Key). - Be sure that API Key haven't expired on the platform.
The webhooks are missing
- The configured URL should be HTTPS and publicly accessible (
localhost). - Your server should answer with
2xxIn less than 10 seconds. - Check the sending history at Platform JAAK → Company → Webhooks.
I want to force a liveness rejection for my test.
- Use the relative prefix of Sandbox Request IDs catalogue.