JavaScript / TypeScript
@deepaidetector/client npm install @deepaidetector/client View on registry →Industry-leading AI text detection over JSON. Trained on 2 billion+ samples. Bearer auth, idempotent endpoints, pricing quotes returned on every call. Official JavaScript and Python SDKs ready to drop in.
Authorization: Bearer dad_live_... on every request except /v1/health./v1/detect with a JSON body
containing text (min 50 words for a verdict, 150+ recommended for high confidence).score (0-1), band (categorical), per-layer scores, and a pricing_quote showing both billing modes.One-liner install in either language. Both wrap the same OpenAPI spec, ship type definitions, and handle retries + error mapping for you.
@deepaidetector/client npm install @deepaidetector/client View on registry →deepaidetector pip install deepaidetector View on registry →Other languages: use the curl / Go / Ruby / PHP / C# samples below — every endpoint is a plain JSON POST/GET.
Every request needs a bearer token in the Authorization header.
Authorization: Bearer dad_live_xxxxxxxxxxxx Live keys start with dad_live_; sandbox / test keys (no real billing, capped
quota) start with dad_test_. Issue, rotate, and revoke from your dashboard. Keys are shown in plaintext exactly once — at
creation time. We only store a hash; if you lose a key you'll need to revoke and create a new
one.
Example: POST /v1/detect. The shape is identical for every other endpoint —
change the path + body.
curl -X POST https://api.deepaidetector.com/v1/detect \
-H "Authorization: Bearer $DEEPAIDETECTOR_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Climate change is reshaping how coastal cities approach long-term planning. Rising sea levels and intensifying storms have moved infrastructure resilience from a niche topic to the top of every mayor agenda.",
"strictness": "balanced"
}'Limits enforced at the edge. Three headers and a meta.rate_limit object are returned
on every response:
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4892
X-RateLimit-Reset: 1717948800000 | Tier | Detections | Words / doc | API |
|---|---|---|---|
| Anonymous | 1 / mo / IP | 1,000 | No |
| Registered Free | 5 / mo | 1,000 | No |
| Starter ($9) | 1,000 / mo | 2,000 | No |
| Pro ($19) | 2,500 / mo | 2,000 | Coming soon |
| Plus ($39) | 3,500 / mo | 4,000 | Coming soon — entry API tier |
| Business ($99) | 5,000 / mo | 5,000 | Coming soon |
| Enterprise ($499) | 10,000 / mo | 20,000 | Coming soon + dedicated support |
| PAYG / API-only | Balance-only | 5,000 | Coming soon |
When rate-limited, the API returns 429 with a Retry-After header (seconds) and a resets_at field (unix ms). Recommended client strategy:
exponential backoff with jitter, respect Retry-After, cap at 3 retries. The
official SDKs do this automatically.
All errors return { "error": "<machine_code>", "message": "<human>", "request_id": "<uuid>" }. Switch on error, not message — only error is part of the
API contract.
| Status | Code | What it means |
|---|---|---|
400 | invalid_input | Body or query failed Zod validation. |
401 | unauthorized | Missing or invalid API key. |
402 | upgrade_required | Word count exceeds tier max, or feature requires a higher plan. |
413 | payload_too_large | Request body over 200KB. |
422 | insufficient_text | Text shorter than the 50-word verdict minimum. |
429 | rate_limit_exceeded | Quota exhausted. Retry after `resets_at`. |
500 | internal_error | Unexpected server failure. Retry with backoff. |
502 | deep_scan_failed | ML upstream unreachable (deep / plagiarism only). |
Configure a webhook URL in your dashboard (Plus+) to receive events when detections complete.
Body is JSON; signature is HMAC-SHA256 over the body in the X-DAD-Signature header.
POST https://your-app.example.com/dad-webhook
X-DAD-Signature: a8f2e9...
X-DAD-Event: detection.completed
X-DAD-Delivery: 0190b1f8-aae5-7e3a-9b1c-7f4ba2c0d3e1
Content-Type: application/json
{
"id": "evt_01J...",
"type": "detection.completed",
"created": 1717948800000,
"data": { /* same shape as POST /v1/detect response */ }
} Retry policy: 7 attempts with exponential backoff over 72h. Respond 2xx within 10s to ack.
Interactive view of /openapi.yaml. Loaded from CDN — if it doesn't render, the
raw spec is always available at /openapi.yaml.
Loading interactive API explorer…
We're putting the finishing touches on the public API surface. Sign up to be the first to know when keys go live — we'll also throw in starter credit on launch day.
In the meantime: the web dashboard, per-passage highlights, exports, and word-pack credits all work today on every paid tier.