The sandbox opens as soon as your organization is created, with no commitment. Same address (https://api.memojin.com), same operations, same responses as production: only the key changes, mj_test_… instead of mj_live_….
What changes with a test key
- Simulated AI generations.
POST …/memocard-generationsandPOST …/question-generationscheck that the content exists (same404as in production), then start nothing: the202response returns a job that is alreadysucceeded,estimate.unitsis0and the header readsMemojin-Credits-Estimate: ai_card=0. No model is called, no credit is used. - Daily quota. 100 requests a day per organization, reset at midnight UTC, on top of the per-minute limit. Beyond:
429 test_quota_exceeded. - Separate idempotency. An
Idempotency-Keyused in test never replays a live response, and the other way round.
The same data as the account
Following a simulated job
The identifier of a simulated job starts with 5a4db0c5-. GET /v1/jobs/{jobId} recognizes it with a test key and returns it succeeded at once, at 100%: your polling loop can be tested end to end.
/v1/jobs/{jobId}Scope jobs:readRequest
curl "https://api.memojin.com/v1/jobs/5a4db0c5-0001-8a3f-8c21-4b7d9e0f1a2c" \
-H "Authorization: Bearer $MEMOJIN_API_KEY"Response 200
{
"id": "5a4db0c5-0001-8a3f-8c21-4b7d9e0f1a2c",
"type": "memocard_generation",
"status": "succeeded",
"progress": 100,
"contentId": null,
"error": null,
"createdAt": "2026-10-05T09:00:00.000Z",
"updatedAt": "2026-10-05T09:00:00.000Z"
}Going live
- Write to us at contact@memojin.com: your integration, its use, its expected volume.
- Our team checks the organization and the use, then opens it for production.
- You receive a
mj_live_…key (shown once). Replace the test key: nothing else changes in your code.