API reference
Two endpoints. Bearer-auth, JSON in, JSON out. Available on the Team plan. Generate a key on the API access page.
Authentication
Pass your API key in the Authorization header as a Bearer token. Treat the key like a password — never commit it to source.
Authorization: Bearer gptypo_a3f7c8e29b1d4a5f6e7c8d9a0b1c2d3e
Requests without a valid key return 401 Unauthorized. Requests from accounts without API access return 403 Forbidden.
POST /api/score
Score text with the neural model. Returns an overall 0–100 score (higher = more human), per-sentence scores with detection signals, and a top-line classification.
{
"text": "string (required, up to 5,000 words)",
"tone": "Standard | Academic | Legal | Medical | Business | Creative | Casual",
"label": "string (optional, up to 60 chars — persisted on the scan record)"
}{
"overall": 87,
"classification": "Human",
"verified": true,
"wordCount": 412,
"scanId": "clx0a1b2c3...",
"sentences": [
{
"text": "...",
"index": 0,
"wordCount": 18,
"score": 92,
"classification": "pass",
"signals": []
}
],
"signalGlossary": { /* signal label → explanation */ },
"usage": { "monthlyWordsUsed": 1234, "monthlyWordLimit": 500000, "remaining": 498766 }
}| Status | Meaning |
|---|---|
| 400 | No text provided, or text exceeds 5,000-word per-scan cap. |
| 403 | Monthly word limit reached. Resets next month. |
| 429 | Rate limit hit. Wait and retry. |
| 504 | Model timed out (rare; usually a Replicate cold start over the function cap). Retry. |
POST /api/suggest
Get rewrite suggestions for a single flagged sentence. Returns two candidate rewrites that aim to preserve meaning while reducing detection risk.
{
"sentence": "string (required) — the flagged sentence to rewrite",
"context": "string (required) — surrounding text, with the sentence as '{{SENTENCE}}'",
"tone": "Standard | Academic | Legal | Medical | Business | Creative | Casual",
"signals": ["AI vocabulary: furthermore", "Burstiness: low variance", "..."]
}{
"suggestions": [
"First rewrite candidate.",
"Second rewrite candidate."
]
}| Status | Meaning |
|---|---|
| 400 | Missing sentence or context. |
| 403 | Suggestion limit reached for the current scan. |
| 429 | Rate limit hit. Wait and retry. |
| 500 | Generation failed. Retry; if persistent, contact support. |
Rate limits
Limits are per-IP for the current minute, on top of monthly word caps. Team is the only tier with API access.
| Limit | Team |
|---|---|
| /api/score requests/min | 50 |
| /api/suggest requests/min | 60 |
| Words per scan | 5,000 |
| Words per month | 500,000 |
Exceeding any limit returns 429 Too Many Requests for request-rate caps, or 403 Forbidden with a usage payload for the monthly word cap.
This is the minimum viable docs page. Full SDK, more language samples, and webhook reference are on the roadmap.