---
title: "Routed providers · intentic sandbox API"
description: "Subscriptions that run another vendor's model under the Claude Code harness. Every route in the routed providers group of the intentic sandbox API, with its input, its answer and a playground."
url: "https://intentic.dev/api/translator/"
---

Models and accounts

# Routed providers

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

**On this page (4 sections)**

- [Subscriptions connected through the translator](#translator-accounts)
- [Start connecting a subscription](#translator-connect)
- [Finish a redirect sign-in](#translator-complete)
- [Disconnect one subscription](#translator-disconnect)

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/accounts` Subscriptions 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 |

Try it answered in this tab

curl

```bash
curl "$SANDBOX/translator/accounts" \
 -H "x-intentic-control: $INTENTIC_TOKEN"
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.accounts();
```

**POST`/translator/{provider}/connect` Start 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 |
| --- | --- | --- |
| `provider` required | "codex" | "grok" | "kimi" | "gemini" | address |

### What comes back

| Field | Type |
| --- | --- |
| `url` The page to open | string |
| `code` The one-time code, where the provider… | string |
| `state` The handshake's id, which the finishing… | string |
| `flow` Which shape this is | "device" | "redirect" |

Try it answered in this tab

curl

```bash
curl -X POST "$SANDBOX/translator/codex/connect" \
 -H "x-intentic-control: $INTENTIC_TOKEN"
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.connect({
 "provider": "codex"
});
```

**POST`/translator/{provider}/complete` Finish 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 |
| --- | --- | --- |
| `provider` required Which provider | "codex" | "grok" | "kimi" | "gemini" | address |
| `redirectUrl` required The address the browser was sent… | string | body |
| `state` required The handshake this belongs to | string | body |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
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

```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}/disconnect` Disconnect one subscription**

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

### What you send

| Field | Type | Where |
| --- | --- | --- |
| `provider` required | "codex" | "grok" | "kimi" | "gemini" | address |
| `name` required | string | body |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
curl -X POST "$SANDBOX/translator/codex/disconnect" \
 -H "x-intentic-control: $INTENTIC_TOKEN" \
 -H "content-type: application/json" \
 -d '{"name":"nightly changelog"}'
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.translator.disconnect({
 "provider": "codex",
 "name": "nightly changelog"
});
```

More in Models and accounts

[Previous ← Cursor accounts](https://intentic.dev/api/cursor/)[Next Endpoints →](https://intentic.dev/api/endpoints/)
