How to connect via API
Connect your bot or website to the decrypt platform. A monthly Premium subscription unlocks keys and jobs.
Getting started
- Create an account on the site.
- Activate a monthly Premium subscription.
- On the API keys page, create a key and save it immediately.
- Send the key with every request to the base URL below.
Current monthly API job limit: 500. Jobs created from the website do not count against this quota.
Authentication
Send the key as an Authorization Bearer token, or as the X-Api-Key header. Keys start with cdlive_ and are shown only once.
Base URL: https://check0ver.com/Decrypter/public/api/v1
Authorization: Bearer cdlive_xxxxxxxx X-Api-Key: cdlive_xxxxxxxx
If a key is lost, revoke it and create a new one. Do not share it publicly.
Typical workflow
- Find the app with GET /search?q=…&store=us or sa, or POST /lookup with a URL or track_id.
- Create the job with POST /jobs, the desired version, and optional tweaks or IPA options.
- Poll GET /jobs/{id} every few seconds until status is completed or failed.
- When completed, download the IPA from download_url.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /search?q=…&store=us | Search apps by name in a store (count from site settings) |
| POST | /lookup | Fetch app details and the last 5 versions |
| POST | /jobs | Create a new decrypt job |
| GET | /jobs | List jobs. Optional ?source=api or ?limit=30 |
| GET | /jobs/{id} | One job’s status and download URL when ready |
| GET | /account | Subscription and monthly usage |
| GET | /tweaks | Preset tweak slugs for the tweaks array |
Examples
Search apps by name
curl "https://check0ver.com/Decrypter/public/api/v1/search?q=whatsapp&store=us" \ -H "Authorization: Bearer YOUR_API_KEY"
Look up an app
curl -X POST "https://check0ver.com/Decrypter/public/api/v1/lookup" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"track_id":"310633997","store":"us"}'
Create a decrypt job
curl -X POST "https://check0ver.com/Decrypter/public/api/v1/jobs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://apps.apple.com/us/app/id310633997","store":"us","version":"25.1.80","tweaks":[],"ipa_options":{"fix_extensions":true}}'
Job status
curl "https://check0ver.com/Decrypter/public/api/v1/jobs/123" \ -H "Authorization: Bearer YOUR_API_KEY"
Account and usage
curl "https://check0ver.com/Decrypter/public/api/v1/account" \ -H "Authorization: Bearer YOUR_API_KEY"
Create-job response shape
{
"ok": true,
"job": {
"id": 123,
"status": "queued",
"progress": 0,
"message": "Job queued",
"app_name": "WhatsApp",
"bundle_id": "net.whatsapp.WhatsApp",
"version": "25.1.80",
"store": "us",
"download_url": null,
"error": null
}
}
Create-job fields
| Field | Description |
|---|---|
q / term | Search text (min 2 characters) — GET /search |
url / track_id | App Store url or track_id (one required) |
store | us or sa. If the URL includes a country code, that wins |
version | Version string. If omitted, the latest version is used |
version_index | Version index from lookup if you do not send version |
tweaks | Array of slugs or filenames from GET /tweaks |
ipa_options | IPA options object. Defaults are used if omitted |
ipa_options keys: fix_extensions, remove_plugins, remove_extensions, min_os_enabled, min_os_version, document_browser.
Response language: ?lang=ar or en, or the X-Lang header. API defaults to English.
Custom dylib uploads are web-only. From the API, use preset slugs from GET /tweaks.
Job statuses
| Status | Description |
|---|---|
queued | Queued, waiting for the worker |
preparing / processing | Downloading, decrypting, or uploading |
completed | Done. download_url is ready |
failed | Failed. Check the error field |
Poll GET /jobs/{id} until status is completed, then use download_url.
Errors
Every error is JSON with ok=false, a code, and an error message.
{
"ok": false,
"code": "unauthorized",
"error": "Invalid API key."
}
| Code | HTTP | Description |
|---|---|---|
unauthorized | 401 | Invalid API key. |
subscription_required | 403 | An active Premium subscription is required to use the API. |
monthly_limit | 429 | You have reached this month’s API job limit. |
queue_full | 429 | Your job queue is full. Wait for a current job to finish. |
bad_url | 422 | Invalid App Store URL. |
app_not_found | 404 | The app was not found in this store. |
version_gone | 422 | That version is not in the last 5 releases. |