Routed providers
Subscriptions that run another vendor's model under the Claude Code harness
On this page(4 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
| Field | Type |
|---|---|
codex | object[] |
name | string |
label | string |
usage | object |
windows | object[] |
kind | string |
label | string |
utilization | number |
resetsAt | number |
measuredAt | number |
grok | object[] |
name | string |
label | string |
usage | object |
windows | object[] |
kind | string |
label | string |
utilization | number |
resetsAt | number |
measuredAt | number |
kimi | object[] |
name | string |
label | string |
usage | object |
windows | object[] |
kind | string |
label | string |
utilization | number |
resetsAt | number |
measuredAt | number |
gemini | object[] |
name | string |
label | string |
usage | object |
windows | object[] |
kind | string |
label | string |
utilization | number |
resetsAt | number |
measuredAt | number |
curl "$SANDBOX/translator/accounts" \
-H "x-intentic-control: $INTENTIC_TOKEN"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
| Field | Type | Where |
|---|---|---|
providerrequired | "codex" | "grok" | "kimi" | "gemini" | address |
What comes back
| Field | Type |
|---|---|
urlThe page to open | string |
codeThe one-time code, where the provider… | string |
stateThe handshake's id, which the finishing… | string |
flowWhich shape this is | "device" | "redirect" |
curl -X POST "$SANDBOX/translator/codex/connect" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.translator.connect({
"provider": "codex"
});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
| Field | Type | Where |
|---|---|---|
providerrequiredWhich provider | "codex" | "grok" | "kimi" | "gemini" | address |
redirectUrlrequiredThe address the browser was sent… | string | body |
staterequiredThe handshake this belongs to | string | body |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
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"}'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
| Field | Type | Where |
|---|---|---|
providerrequired | "codex" | "grok" | "kimi" | "gemini" | address |
namerequired | string | body |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
curl -X POST "$SANDBOX/translator/codex/disconnect" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"name":"nightly changelog"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.translator.disconnect({
"provider": "codex",
"name": "nightly changelog"
});