DOCUMENTED PROVIDER CONTRACT
What TypeSafe documents today.
Checked on September 20, 2026 against TypeSafe’s API documentation and model specifications. These are documented facts about the direct TypeSafe API, not statements about BeatAPI behavior. Check the sources before production use, because specifications change.
POST https://api.typesafe.ai/v1/systemoneOne route for every question type.Authorization: Bearer <API_KEY>Keep keys server-side and out of prompts.jev-1.13.0 is current; jev-latest and jev-preview are aliasesPin the version you tested; aliases can move.The model reads the state once and evaluates every question against it in parallel, so adding a second or third question about the same state is cheaper than sending the state again.
curl https://api.typesafe.ai/v1/systemone \
-H "Authorization: Bearer $TYPESAFE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-latest",
"state": "Help! My payouts have been failing for 3 days.",
"questions": {
"is_urgent": { "type": "noul", "instructions": "Does this convey urgency?" }
}
}'Label: documented by the provider. The BeatAPI route will use its own endpoint, credential, and model ID, which this site will publish only after live verification.
REQUEST SHAPE
One state. Many questions.
A Jev request combines a shared state, a model identifier, and a map of questions. Question keys are controlled by your application and return under the same keys.
{
"model": "jev-latest",
"state": {
"ticket": "Login fails for all new users",
"releaseInHours": 18
},
"questions": {
"queue": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payment and subscription issues",
"technical": "Bugs and integration failures",
"sales": "Pricing and account questions"
}
},
"urgent": {
"type": "noul",
"instructions": "Does this require action today?"
}
}
}Exact BeatAPI endpoint paths, authentication headers, and the production model ID are intentionally omitted until they are live-verified. Keep state to the facts the decision needs: it counts toward the 32k-token budget and the input price.
QUESTION TYPES
Three primitives, three answer shapes.
noulinstructions; optional criteria.true and criteria.false to define each sidenoul, a number from 0 to 1choiceinstructions and a criteria map of up to 255 named optionschoice, probabilities for every option, and confidencescoreinstructions and a criteria array of 2 to 10 ordered levelsscore, a legend, probabilities, and confidenceUse noul for a gate, choice for a route, and score for a rubric. If two outcomes overlap, the probability mass splits between them and your threshold becomes unreliable, so keep option descriptions distinct. For worked examples, see agent routing and guardrails.
TYPED RESPONSE
Answers your code can branch on.
{
"model": "jev-1.13.0",
"answers": {
"queue": {
"type": "choice",
"choice": "technical",
"probabilities": {
"billing": 0.03,
"technical": 0.95,
"sales": 0.02
},
"confidence": 0.93
},
"urgent": { "type": "noul", "noul": 0.91 }
},
"usage": { "input_tokens": 296, "output_tokens": 20 }
}The shape follows the documented answer fields; the numbers are illustrative. The response also reports usage, which is what you reconcile against billing. Keep the exact returned model version with your logs. If thresholds change, you need to know which model generated the historical probabilities.
INTEGRATION PATTERNS
Three production-safe patterns.
Threshold + review
Execute only above a calibrated threshold. Send ambiguous cases to a human queue.
Decision + validation
Use Jev to select a path, then validate permissions and invariants in deterministic code.
Primary + fallback
When a request fails or confidence is low, fall back to rules, another model, or a safe stop.
ERRORS AND RETRIES
Separate bad requests from temporary failures.
401Missing or invalid API keyStop and fix configuration. Do not retry.422Request validation failedCorrect the state or question shape. Do not retry unchanged.429Rate limit exceededRetry with exponential backoff.529Service temporarily overloadedRetry with exponential backoff, then fall back.TypeSafe’s guidance is to back off exponentially on 429 and 529 instead of retrying immediately. Add jitter so many workers do not retry together, cap total attempts, and decide in advance what your system does when the decision never arrives: usually route to review or a safe stop, never to an automatic side effect. See the guardrails pattern for fail-safe defaults.
BEATAPI STATUS
The access path is reserved, not advertised as live.
Before this site enables an API button, the integration must verify authentication, request validation, typed output, model version, token usage, billing, task logs, and an end-to-end example. Until then, every access control remains visibly disabled.