Jev on Vercel AI Gateway
Jev on Vercel AI Gateway is the Vercel door: model id typesafe-ai/jev, billed (or promoted) on your Vercel team, provider typesafe-ai. Snapshot: 2026-09-21. This is a complete setup guide. Two public Vercel pages disagreed on the sticker the same day — read both, then your dashboard.
Channel hub: Jev channels. Invoice: pricing by channel. “Is it free?”: Is Jev free?.
1. Vercel team, card on file, credential
- Use a Vercel team that can open AI Gateway (vercel.com).
- Put a payment method on file. Third-party launch-week notes: a team without a card can get
customer_verification_requiredeven when the model sits in a free/promo bucket. Adding a card is not the same as buying credits. - Pick one auth style:
- AI Gateway API key —
AI_GATEWAY_API_KEY,Authorization: Bearer - OIDC —
vercel linkthenvercel env pullwritesVERCEL_OIDC_TOKEN. Vercel’s KB: local OIDC expires after 12 hours; a 401 locally often means re-pull. Deployments on Vercel get a token automatically.
- AI Gateway API key —
- You only need one of those. That credential authenticates you to Gateway, not to TypeSafe.
If you want Gateway to bill TypeSafe directly, Vercel documents BYOK (a TypeSafe key under Gateway). BYOK is on the paid tier; failed BYOK can fall back to system credentials and charge Gateway credits.
2. Promo vs list (verify today)
Fetched 2026-09-21:
- Model card: $0.042 / 1M input tokens, max output tokens 0, provider typesafe-ai, context 32,000 on that card
- TypeSafe provider table:
typesafe-ai/jevmarked Free, input Free, output Free - Vercel KB (typesafe-jev-and-ai-sdk): $0.042 / 1M input, context 64,000 per request and 32,000 for
state— closer to TypeSafe’s models page than the Gateway card - AI Gateway pricing: no markup on tokens; free tier is a subset of models and is rate-limited per model; purchasing credits moves the team to the paid tier and ends the monthly free-credit bucket
- Independent rival note (jevaiguide, last checked 19 September 2026): promo ending 25 September 2026
2026-09-21: the Free row is still visible on the provider catalog; the model card still prints list. Jev did not appear in the ?freeTier=true filter dump we retrieved. Re-check Vercel before 25 September and after. A dashboard $0 is a dated Vercel claim, not a TypeSafe free tier.
Vercel’s TypeSafe-compatible docs example shows provider_metadata.gateway.cost = 0.00001155 on 275 input tokens — that arithmetic is 275 / 1e6 × 0.042. Examples can bill list even when a catalog row says Free.
If you only want the experiment: add the card, do not top up, and watch free-tier 429s. Free-tier limits are lower per model.
3. Path A — AI SDK experimental_evaluate (TypeScript)
Vercel KB + model card: AI SDK 7.0.105+. Yes/no type is boolean (returns probability). That name is not first-party noul.
npm i ai
# local OIDC:
vercel link && vercel env pull
import { experimental_evaluate as evaluate } from "ai";
export async function wasRefunded(transcript: string) {
const result = await evaluate({
model: "typesafe-ai/jev",
state: transcript,
questions: {
refunded: {
type: "boolean",
instructions: "Was a refund issued to the customer?",
criteria: {
true: "The agent confirmed that money was returned to the customer.",
false: "No refund was issued, or the refund was declined.",
},
},
},
});
return result.answers.refunded.probability;
}
A string model id (typesafe-ai/jev) routes through AI Gateway and authenticates with the OIDC token (KB). You can also pass an explicit Gateway provider object — see Vercel’s guide.
Mixed types on one state (Vercel KB). Optional providerOptions.gateway.zeroDataRetention: true (changelog / KB, 16 September 2026). Choice/score confidence on this path is documented under result.providerMetadata.typesafe.confidence, not on the first-party HTTP envelope.
import { experimental_evaluate as evaluate } from "ai";
const result = await evaluate({
model: "typesafe-ai/jev",
state: {
subject: "Stripe sync broken",
message: "My Stripe connection has failed for three days and I am losing sales.",
},
questions: {
department: {
type: "choice",
instructions: "Which team should handle this ticket?",
criteria: {
billing: "Charges, invoices, and refunds",
technical: "Bugs, outages, and integration failures",
other: "Anything that does not fit the other teams",
},
},
severity: {
type: "score",
instructions: "How severe is the issue for the customer?",
criteria: [
"Cosmetic or informational",
"Degraded, but a workaround exists",
"Blocking with no workaround",
],
},
requestsRefund: {
type: "boolean",
instructions: "Is the customer asking for money back?",
},
},
providerOptions: { gateway: { zeroDataRetention: true } },
});
Copy-pasting boolean to TypeSafe HTTP or OpenRouter System One has been reported as 400 / invalid_request. Use noul on those doors.
4. Path B — TypeSafe SDK via Gateway (Py + TS)
Vercel: TypeSafe API with AI Gateway.
- Base URL:
https://ai-gateway.vercel.sh/typesafe POST /typesafe/v1/systemoneandGET /typesafe/v1/models- Auth:
AI_GATEWAY_API_KEYor OIDC bearer - Questions use TypeSafe names (
noul/choice/score) on this path - Model:
typesafe-ai/jev
import { TypeSafeClient } from "@typesafe-ai/sdk";
const client = new TypeSafeClient({
apiKey: process.env.AI_GATEWAY_API_KEY,
baseURL: "https://ai-gateway.vercel.sh/typesafe",
});
const result = await client.systemOne({
model: "typesafe-ai/jev",
state: "I was charged twice for my subscription.",
questions: {
refund: {
type: "noul",
instructions: "Is the customer asking for money back?",
},
},
});
Official Python SDK (same base_url pattern as the TypeScript client):
import os
from typesafe_sdk import TypeSafeClient
client = TypeSafeClient(
api_key=os.environ["AI_GATEWAY_API_KEY"],
base_url="https://ai-gateway.vercel.sh/typesafe",
)
result = client.system_one(
model="typesafe-ai/jev",
state="I was charged twice for my subscription.",
questions={
"refund": {"type": "noul", "instructions": "Is the customer asking for money back?"},
},
)
print(result.answers["refund"])
Or raw HTTP (Vercel’s documented Python example):
import os
import requests
response = requests.post(
"https://ai-gateway.vercel.sh/typesafe/v1/systemone",
headers={
"Authorization": f"Bearer {os.environ['AI_GATEWAY_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "typesafe-ai/jev",
"state": "I was charged twice for my subscription.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for money back?",
}
},
},
)
print(response.json()["answers"])
curl https://ai-gateway.vercel.sh/typesafe/v1/systemone \
-H "Authorization: Bearer $AI_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "typesafe-ai/jev",
"state": "I was charged twice for my subscription.",
"questions": {
"refund": {
"type": "noul",
"instructions": "Is the customer asking for money back?"
}
}
}'
Vercel’s documented success envelope includes provider_metadata.gateway.routing with resolvedProvider / finalProvider: typesafe-ai, plus cost / generationId. Errors use TypeSafe’s shape (error_type: invalid_request, …). Provider errors pass through.
5. Pitfalls
- No card on file →
customer_verification_required - Buying credits to “unlock” a trial → you leave the monthly free-credit bucket (Vercel pricing docs)
- Expired local OIDC → 401; re-run
vercel env pull - TypeSafe key on the Gateway host (or Gateway key on
api.typesafe.ai) → 401 - Chat completions — not for Jev
- Context cards disagree — Gateway model card 32k; Vercel KB 64k/32k; TypeSafe models page 64k/32k. Believe the door + the request that failed.
- Free-tier 429 is documented as lower per-model limits. Rival batch timings are theirs, not a jev.pro SLA.
When this door wins
App already on Vercel + AI SDK + Gateway budgets / ZDR flags, or the dashboard still shows Free and you can tolerate free-tier throttle. When it loses: you need first-party 64k + Playground, you refuse a card on file, or the promo flipped back to $0.042 and OpenRouter is the simpler unified bill.
FAQ
Is the Sep 25 promo still on?
2026-09-21: provider table Free/Free; model card $0.042. Rival cited end date 25 September 2026. Check Vercel. We do not extend the window.
Does buying Gateway credits keep Jev free?
Unlikely to be the move you want. Vercel: purchasing credits → paid tier, monthly free credit stops. Token rate then follows the model card / dashboard.
Can I use chat completions?
Not for Jev. Use evaluate or the TypeSafe-compatible /systemone path.
What this page does not claim
- No guarantee Free survives the weekend of 25 September.
- No jev.pro measurement of Gateway RPM.
- No keys from this site.