intentic
Download the app
Download the app
Models and accounts

Routed providers

Subscriptions that run another vendor's model under the Claude Code harness

On this page(5 sections)

The bundled translator runs a non-Claude model on the user's own subscription, so each provider connects by signing in rather than with an API key, and one provider can hold several accounts at once. Two sign-in shapes ride these routes: a code typed on a device page, which finishes by itself, and a redirect whose landing address is handed back.

GET/translator/accountsSubscriptions connected through the translator

What is signed in per provider. Each provider can hold several accounts at once, and the translator spreads work across them.

What you send

Nothing. Call it as it is.

What comes back

FieldType
codexobject[]
namestring
labelstring
usageobject
windowsobject[]
kindstring
labelstring
utilizationnumber
resetsAtnumber
gates"all" | "none" | object
roundedThe provider rounds this figure to…boolean
lapsedAtWhen the window this pool was…number
missingSinceWhen the provider stopped reporting this…number
measuredAtnumber
unreadPresent while re-reading this account keeps…object
sinceWhen re-reading this account first failed,…number
reasonWhy, in the provider's own words…string
uncoveredModels this account serves that no…string[]
contradictedA turn on `model` was answered…object
atWhen the turn was answered, in…number
modelThe model the answered turn ran…string
coolingobject
untilnumber
reasonstring
verifystring
grokobject[]
namestring
labelstring
usageobject
windowsobject[]
kindstring
labelstring
utilizationnumber
resetsAtnumber
gates"all" | "none" | object
roundedThe provider rounds this figure to…boolean
lapsedAtWhen the window this pool was…number
missingSinceWhen the provider stopped reporting this…number
measuredAtnumber
unreadPresent while re-reading this account keeps…object
sinceWhen re-reading this account first failed,…number
reasonWhy, in the provider's own words…string
uncoveredModels this account serves that no…string[]
contradictedA turn on `model` was answered…object
atWhen the turn was answered, in…number
modelThe model the answered turn ran…string
coolingobject
untilnumber
reasonstring
verifystring
kimiobject[]
namestring
labelstring
usageobject
windowsobject[]
kindstring
labelstring
utilizationnumber
resetsAtnumber
gates"all" | "none" | object
roundedThe provider rounds this figure to…boolean
lapsedAtWhen the window this pool was…number
missingSinceWhen the provider stopped reporting this…number
measuredAtnumber
unreadPresent while re-reading this account keeps…object
sinceWhen re-reading this account first failed,…number
reasonWhy, in the provider's own words…string
uncoveredModels this account serves that no…string[]
contradictedA turn on `model` was answered…object
atWhen the turn was answered, in…number
modelThe model the answered turn ran…string
coolingobject
untilnumber
reasonstring
verifystring
geminiobject[]
namestring
labelstring
usageobject
windowsobject[]
kindstring
labelstring
utilizationnumber
resetsAtnumber
gates"all" | "none" | object
roundedThe provider rounds this figure to…boolean
lapsedAtWhen the window this pool was…number
missingSinceWhen the provider stopped reporting this…number
measuredAtnumber
unreadPresent while re-reading this account keeps…object
sinceWhen re-reading this account first failed,…number
reasonWhy, in the provider's own words…string
uncoveredModels this account serves that no…string[]
contradictedA turn on `model` was answered…object
atWhen the turn was answered, in…number
modelThe model the answered turn ran…string
coolingobject
untilnumber
reasonstring
verifystring
Try itanswered in this tab
curl
curl "$SANDBOX/translator/accounts" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.accounts();
POST/translator/{provider}/connectStart connecting a subscription

Begins the sign-in for one provider and says which of the two shapes it is: a code you type into a device page, which finishes by itself in the background, or a redirect whose landing address you hand back afterwards.

What you send

FieldTypeWhere
providerrequired"codex" | "grok" | "kimi" | "gemini"address

What comes back

FieldType
urlThe page to openstring
codeThe one-time code, where the provider…string
stateThe handshake's id, which status reads…string
flowWhich shape this is"device" | "redirect"
catchersWho is watching for where the…object[]
kind"device" | "browser"
labelstring
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/translator/codex/connect" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.connect({
  "provider": "codex"
});
GET/translator/{provider}/connectRead a subscription connection attempt

Reports whether this exact sign-in attempt is waiting, completed, or failed. Completion is tied to the attempt rather than a change in account count, because signing in to an existing account replaces its credential in place.

What you send

FieldTypeWhere
providerrequired"codex" | "grok" | "kimi" | "gemini"address
staterequiredstringquery

What comes back

FieldType
when status is "wait"shape
when status is "ok"shape
when status is "error"shape
errorstring
Try itanswered in this tab
curl
curl "$SANDBOX/translator/codex/connect?state=idle" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.status({
  "provider": "codex",
  "state": "idle"
});
POST/translator/{provider}/completeFinish a redirect sign-in

For the providers that redirect somewhere this sandbox cannot receive: hand back the address you landed on and the connection completes.

What you send

FieldTypeWhere
providerrequiredWhich provider"codex" | "grok" | "kimi" | "gemini"address
redirectUrlrequiredThe address the browser was sent…stringbody
staterequiredThe handshake this belongs tostringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/translator/codex/complete" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"redirectUrl":"https://sandbox-a1b2c3d4e5f6.intentic.dev","state":"idle"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.complete({
  "provider": "codex",
  "redirectUrl": "https://sandbox-a1b2c3d4e5f6.intentic.dev",
  "state": "idle"
});
POST/translator/{provider}/disconnectDisconnect one subscription

Clears a single account by name. Any others under the same provider stay connected.

What you send

FieldTypeWhere
providerrequired"codex" | "grok" | "kimi" | "gemini"address
namerequiredstringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/translator/codex/disconnect" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"name":"nightly changelog"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.disconnect({
  "provider": "codex",
  "name": "nightly changelog"
});
More in Models and accounts

Type to search every page, in the docs and the API reference.