Welcome to CronJobFast
CronJobFast is a premium HTTP cron platform: REST API, signed webhooks, DHRU Auto Sync, reseller flow with sub-accounts, and one-time security unlocks. This page is the complete developer reference — auth, endpoints, integrations, comparisons.
How it works
- Sign up for a free account at app.cronjobfast.com.
- Issue an API key from Sidebar → Integrations → API Keys. The cleartext token is shown only once; we store SHA-256 hashes.
- Create a cron job — manually from the panel, programmatically via
POST /api/v1/jobs, or via the DHRU Other Script endpoint. - Listen for results — register a webhook endpoint to get HMAC-signed delivery on every interesting event.
Authentication
The REST API uses Bearer tokens. Each request must include:
Authorization: Bearer cjf_live_<32-char-secret>
- Format:
cjf_live_prefix + 32 alphanumeric characters. - Storage: only the SHA-256 hash is persisted; the cleartext is shown once at issuance.
- Scopes:
read,write, plus optionaldhru_otherscriptfor the DHRU integration. - Revocation: instant. The hash row is marked
revoked_atand every subsequent request returns 401.
Rate limits
60 requests per minute per API key, sliding window backed by Redis. Every authenticated response carries:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 32 # seconds until window resets
When the budget is exhausted you get HTTP 429 with the same headers; back off until Reset.
Envelopes & errors
Every response is wrapped:
{ "data": { ...handler-specific... } }
{ "error": { "code": "snake_case", "message": "Human", "details": { ... } } }
| HTTP | Meaning |
|---|---|
200 | OK |
400 | Bad request (validation) |
401 | Missing or invalid bearer |
403 | Insufficient scope |
404 | No matching route |
409 | Idempotency conflict, expired key or unconfirmed operation |
422 | Domain failure (e.g. add-on not eligible) |
429 | Rate limit hit |
500 | Unexpected server error |
503 | Idempotency storage unavailable or outcome unconfirmed; retry the same key after recovery |
POST / PATCH / DELETE
include an Idempotency-Key header (1–128 letters, digits, dots, underscores or hyphens).
Database mutations and their response are committed together. The same key, method, URL and body
replay the response for 24 hours. A changed request or expired key returns 409;
an expired key is never reused automatically. Run Now and verification email reserve the key before
sending: an unconfirmed operation returns 409 idempotency_pending on retry.
Inspect its outcome before starting a new request. Storage failures return 503
without falling back to an unprotected mutation. During the legacy transition, new protected writes return 503 idempotency_not_active until activation. One-time credential responses are encrypted.
API · Account
GET /me
Current user, plan, balance, monthly add-on cost.
{ "data": {
"user_id": 7, "email": "ops@example.com",
"plan": "advanced", "balance": "12.50",
"monthly_addon_cost": "1.99",
"scopes": ["read","write"], "api_key_id": 4
}}
API · Balance & transactions
GET /balance
Lightweight; only the current balance.
GET /transactions?limit=50
Recent credit_transactions. limit clamped to [1..200].
POST /balance/topup (reseller-only)
Credit a sub-account from the reseller's balance. Atomic with paired ledger rows.
API · Plans
GET /plans
Catalogue: basic, starter, advanced, professional, dhru_premium.
POST /plans/change
Switches the user's plan with automatic Stripe-style prorate. Requires write scope.
{ "plan": "advanced" }
API · Add-ons
GET /addons/catalog
Returns every add-on key with price, eligibility flags and benefit. Source of truth for the panel UI.
POST /addons
Activate a monthly add-on. Body: { "addon_key": "extra_manual_jobs", "quantity": 1 }.
DELETE /addons/{id}
Cancel an active add-on. Status transitions to cancelled; the row is preserved for history.
API · Jobs
GET /jobs
List manual jobs. Supports limit, offset, status, type query params.
POST /jobs
Create a new manual job.
{
"name": "Daily backup ping",
"url": "https://example.com/cron/backup",
"method": "GET",
"interval": 86400,
"headers": { "X-Auth": "secret" },
"body": null
}
PATCH /jobs/{id}
Partial update. Only the fields you send change.
POST /jobs/{id}/run-now
Force an out-of-band execution of a job. Returns the job_runs row id.
GET /jobs/{id}/runs?limit=50
Recent execution log for one job.
API · Webhooks
Full CRUD for outbound webhook endpoints — see the Webhooks section below for event types and HMAC verification details.
API · Reseller (gated)
Available only to accounts flagged is_reseller=1. The full reseller namespace under /api/v1/reseller/* covers sub-account CRUD, credit transfers, suspension/reactivation, public profile, and aggregate usage.
POST /api/v1/reseller/accounts — create sub-account
POST /api/v1/reseller/accounts/{id}/topup — atomic credit transfer
POST /api/v1/reseller/accounts/{id}/suspend — suspend
POST /api/v1/reseller/accounts/{id}/reactivate
GET /api/v1/reseller/usage — fleet aggregates
DHRU Integration · Other Script endpoint
CronJobFast speaks the DHRU Fusion API standards (v6.1) so resellers can plug it into their DHRU panel as an "Other Script" provider. The endpoint lives at:
https://app.cronjobfast.com/dhru-sync
DHRU appends /api/index.php automatically; no need to suffix the URL.
Setup
- From the panel: Sidebar → Account → Reseller Panel → DHRU Connect. Generate an API key (auto-scoped to
dhru_otherscript). - In your DHRU admin: API Settings → Add Other Script with:
Name→CronJobFastAPI KEY→ the cleartext key you just generatedUsername→ your numeric user id (shown next to the key)API url→https://app.cronjobfast.com/dhru-syncCurrency→USD
- Click Synchronize. DHRU will pull our service catalog and surface our products under your shop.
Actions catalog
| Action | What we do |
|---|---|
accountinfo | Returns your spendable credits (balance + remaining overdraft) plus account email. |
imeiservicelist | Returns the catalog: 1 generic credit + plans (Starter / Pro / DHRU Premium, monthly + yearly). |
placeimeiorder | Atomic credit/plan delivery to a customer email; auto-creates the sub-account if missing. |
getimeiorder | Status lookup by reference id. |
imeiorderstatus | Recent orders list. |
Order flow
When a customer of yours buys from your DHRU storefront, DHRU calls our placeimeiorder. We:
- Resolve (or create) the customer's sub-account by email.
- Debit the agreed credits from your reseller balance and credit them to the sub.
- If the order is a plan, run
changePlanWithProrate()on the sub — full Stripe-style upgrade math. - Email the customer a "set your password" link if the sub-account is brand new.
- Emit
dhru.order.completedwebhook to your registered endpoints.
Webhooks · Event types
| Event | Trigger |
|---|---|
webhook.test | You hit POST /webhooks/{id}/test |
payment_intent.confirmed | Top-up confirmed |
payment_intent.cancelled | Top-up cancelled before confirm |
payment_intent.expired | Top-up expired with no action |
addon.activated | Add-on row created |
addon.cancelled | Add-on cancelled |
addon.expired | Renewal failed (insufficient balance) |
balance.low | Balance crosses your threshold |
plan.changed | Plan switch (with prorate metadata) |
job.auto_paused | Job hit the consecutive-failure threshold |
reseller.account.created | Sub-account provisioned |
reseller.account.suspended | Sub-account paused |
reseller.account.reactivated | Sub-account resumed |
reseller.transfer.completed | Credits moved to a sub-account |
reseller.credit_limit_warning | Overdraft used ≥ 80% |
reseller.credit_limit_exhausted | Overdraft used == 100% |
dhru.order.completed | DHRU placeimeiorder succeeded |
dhru.order.failed | DHRU placeimeiorder rejected |
Signature verification
Every delivery includes:
Cronjobfast-Signature: t=1700000000,v1=<hex>
Where v1 is hmac_sha256(secret, "{t}.{body}"). Verify on your side:
// Node
const crypto = require('crypto');
const [_, ts, sig] = req.headers['cronjobfast-signature'].match(/t=(\d+),v1=([a-f0-9]+)/);
const expected = crypto.createHmac('sha256', SECRET)
.update(ts + '.' + req.rawBody).digest('hex');
const valid = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
Retries & backoff
Up to 6 attempts at 1m → 5m → 30m → 2h → 6h → 12h. After 12 consecutive failures the endpoint is auto-disabled and we emit nothing else until you flip it back to active. During key rotation we double-sign with both old and new secrets for 24 hours, so you can rotate without downtime.
Why CronJobFast
A factual breakdown of where CronJobFast leads compared to popular alternatives. All numbers reflect publicly published specs at the time of writing — verify with each provider before final selection.
Headline differentiators
- 2-second minimum interval from the Pro tier and up — most general-purpose providers cap at 60 seconds.
- HMAC-signed webhooks on 19 event types with 24-hour double-signing during secret rotation, exponential retry to 12 hours, and auto-disable after 12 consecutive failures.
- Idempotency-Key receipts on write endpoints — database effects and their response share one commit, with response replay for 24 hours.
- Native DHRU vertical: Auto Sync of 260+ endpoint catalog, DHRU "Other Script" provider, and a reseller flow with sub-account management built into the API.
- Reseller credit purchases are the current purchase channel. Agree on payment and plan extensions with an authorised reseller. Direct payment collection and automatic plan renewal are deferred until Acequia Pay is integrated.
- Endpoint Protection — cron endpoint protection as a one-time unlock (1.99 credits, account-wide). Currently unavailable while the worker egress set is being re-verified.
- Reseller program with overdraft, atomic credit transfers, DHRU Other Script API, and a public directory at /resellers.
Pricing parity
CronJobFast lists in credits (1 credit ≈ $1 USD nominal). Credits do not expire; paid plans keep their stated expiry date and require an explicit extension. Resellers confirm their payment conditions. Equivalents in monthly USD for like-for-like tiers:
| Tier | CronJobFast | FastCron | cron-job.org | EasyCron |
|---|---|---|---|---|
| Free | $0 · 5 jobs · 30s | $0 · 5 jobs · 60s | $0 · 50 jobs · 60s | $0 · 20 jobs · 600s |
| Entry paid | $2.99 · 20 jobs · 5s | $5 · ~20 jobs · 60s | $5 · 200 jobs · 60s | $5.95 · 30 jobs · 60s |
| Mid tier | $4.99 · 60 jobs · 2s | $15 · 60 jobs · 60s | $15 · 1,000 jobs · 60s | $15.95 · 100 jobs · 60s |
| Top tier | $9.99 DHRU Premium · 500 jobs · 2s · 50k logs | $30 · 200 jobs · 60s | $25 · 5,000 jobs · 60s | $39.95 · 500 jobs · 60s |
Snapshot as of May 2026. Sub-second-precision execution and DHRU integration are unique to CronJobFast at any of these tiers.
Feature matrix
| Capability | CronJobFast | FastCron | cron-job.org | EasyCron |
|---|---|---|---|---|
| Minimum interval | 2s (Pro+) | 60s | 60s | 60s |
| REST API (CRUD + reseller + webhooks) | 30+ endpoints, idempotent | Read-mostly | Limited CRUD | Yes |
| HMAC-signed webhooks | 19 events · key rotation grace | Basic | Failure notifications only | Email + URL |
| Idempotency keys | Yes (24h response replay) | — | — | — |
| DHRU Auto Sync (260+ endpoints) | Native | — | — | — |
| DHRU "Other Script" reseller endpoint | Native | — | — | — |
| Reseller / sub-accounts | Built-in (overdraft, atomic transfers, public listing) | — | — | — |
| Current purchase channel | Authorised resellers; payment methods agreed with the reseller | — | — | — |
| Endpoint Protection (anti-double-execution) | 1.99 credits one-time unlock — currently unavailable (egress re-verification) | — | — | — |
| 2FA (TOTP) | Yes · 10 backup codes | Yes | — | Yes |
| Telegram + email failure alerts | Yes | |||
| Per-job retry & auto-pause | Configurable + threshold-based auto-pause | Limited | Threshold-based pause | Limited |
| Plan-change prorate (Stripe-style) | Atomic with refund-as-credit | Manual | — | Manual |
When to pick a different provider
To stay factual: each alternative has its own strengths and we want you to choose based on what your project needs, not a sales pitch.
- FastCron — solid choice if you already run on AWS regions covered by their nodes and don't need DHRU or sub-second precision.
- cron-job.org — generous free tier if you're happy with minute-precision and don't need a reseller layer.
- EasyCron — long-running history retention on the enterprise tier if you just need a UI to schedule URLs.
If your stack involves DHRU panels, GSM tools, sub-second timing, reseller management or reseller credit purchases, none of the alternatives match what CronJobFast ships today.
In-depth · vs cron-job.org
cron-job.org publishes a free, generous-jobs-count tier limited to 60-second precision and offers basic failure email alerts. CronJobFast adds: sub-second timing on Pro+, idempotent writes, signed webhooks across 19 events, sub-account API, DHRU vertical, and credits that never expire.
In-depth · vs EasyCron
EasyCron's UI focuses on URL scheduling with email notifications and Telegram on higher tiers. CronJobFast prices its mid tier ~3× cheaper for 30× more execution capacity, retains up to 50,000 run-log rows on DHRU Premium (vs ~10,000 on EasyCron's plus tier), and adds a programmable reseller layer with overdraft and prorate billing.
FAQ · Cloudflare WAF blocks
If your origin sits behind Cloudflare and the cron URL returns 403, allowlist our worker:
- User-Agent:
CronJobFast/1.0
For the full setup, the Cron Endpoint Protection add-on (1.99 credits, one-time) emails step-by-step instructions and a link to the panel wizard, which generates the Cloudflare Custom rule that blocks every other source. Currently unavailable while the worker egress set is being re-verified — it is not purchasable and no charge is possible.
FAQ · Migrating from another service
- Check Endpoint Protection in the add-ons section (optional; unavailable while the worker egress set is being re-verified).
- Replicate your jobs via
POST /jobsor by importing JSON in the panel. - When Endpoint Protection is available again, its setup instructions email and the panel wizard walk you through the WAF rule so the old service stops triggering double-executions.
- Cancel the old subscription. Done.
FAQ · Domain & job quotas
| Plan | Manual jobs | Min interval | DHRU domains |
|---|---|---|---|
| Free | 5 | 30s | 0 |
| Starter | 20 | 5s | 0 |
| Pro | 60 | 2s | 1 |
| DHRU Premium | 500 | 2s | 3 |
Need more? Buy the corresponding add-ons (stackable per slot/domain) or upgrade tier.
Changelog
See the public changelog. Earlier highlights:
- 2026-05 · Phase 6.3 ships — DHRU Other Script, reseller overdraft, public listing, Endpoint Protection one-time unlock (1.99 credits).
- 2026-04 · TOTP 2FA, full REST API v1, signed webhooks (15 events).
- 2026-03 · Reseller v1 — sub-accounts, atomic credit transfers, public profile.
- 2026-02 · DHRU Auto Sync — 260+ endpoint catalog, Smart Speed scheduling.