Endpoints
A model server you configured, and the free trial's allowance
On this page(5 sections)
Every built-in provider's catalogue is one fixed route, because there is one of each. Endpoints are user-created and unbounded, so the id rides in the address and the answer is whatever the configured server says about itself. The trial belongs here because the trial is an endpoint — the one the daemon provisions rather than you.
GET/endpoints/{id}/modelsModels a connected server offers
Asks one configured model server what it serves. There is no built-in list and no fallback: what a server offers is knowable only by asking it, so an empty answer is the honest report that we could not.
What you send
| Field | Type | Where |
|---|---|---|
idrequiredWhich connection | string | address |
What comes back
| Field | Type |
|---|---|
modelsWhat this provider serves, in its… | object[] |
idWhat to name when asking for… | string |
labelWhat to call it on screen | string |
effortsThe thinking levels it accepts, where… | string[] |
descriptionWhat it is good for, in… | string |
badgesWhat it is known for, where… | "reasoning" | "fast"[] |
contextWindowHow many tokens this model will… | number |
helperOnlySet where this model may write… | "no-tool-calls" | "instant-tier" |
defaultWhich one a fresh conversation starts… | string |
curl "$SANDBOX/endpoints/a1b2c3d4/models" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.endpoints.models({
"id": "a1b2c3d4"
});GET/endpoints/trial/statusWhat is left of the free trial
The allowance, what has been used, when it resets, and which model actually answered the last message. Not being available is the ordinary answer rather than a failure: most sandboxes run against a platform that offers no trial at all.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
available | boolean |
allowance | integer |
used | integer |
remaining | integer |
health | "unknown" | "healthy" | "degraded" | "unavailable" |
resetsAt | string |
retryAt | string |
servedModel | string |
grace | integer |
curl "$SANDBOX/endpoints/trial/status" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.endpoints.trial();GET/endpoints/local-model/fitWhich local models this machine can actually run
The memory this sandbox may use, and every curated model priced two ways: whether it fits in the free memory and so runs at full speed, and whether it can load at all. The two the connect view offers, one that downloads in a minute and the best this machine runs at full speed, come from the first; a start is refused only on the second. These run on the sandbox's CPU; a GPU model is a server on the host, which hostServers finds.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
memoryBytes | integer |
memoryCapped | boolean |
budgetBytes | integer |
fullSpeedBytes | integer |
serverReady | boolean |
options | object[] |
model | string |
label | string |
tier | "instant" | "work" |
weightsBytes | integer |
held | boolean |
windows | object[] |
tokens | integer |
totalBytes | integer |
fits | boolean |
fullSpeed | boolean |
instant | object |
model | string |
context | string |
best | object |
model | string |
context | string |
prefetch | object |
model | string |
state | "idle" | "downloading" | "held" | "failed" |
receivedBytes | integer |
totalBytes | integer |
detail | string |
curl "$SANDBOX/endpoints/local-model/fit" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.endpoints.localModelFit();GET/endpoints/host-serversModel servers already running on the computer that hosts this sandbox
Asks the usual ports of the hosting computer (Ollama 11434, LM Studio 1234, llama.cpp 8080, vLLM 8000) for their model list, as the container reaches them at host.docker.internal. Only servers that answer with models are listed, each with the connection that already points at it, if one does. Nothing is added.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
servers | object[] |
kindWhich program usually listens on the… | "ollama" | "lmstudio" | "llamacpp" | "vllm" |
labelIts name, for the row | string |
baseUrlWhere the container reaches it, as… | string |
modelsThe models it lists right now | string[] |
capabilityThe connection that already points at… | string |
curl "$SANDBOX/endpoints/host-servers" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.endpoints.hostServers();POST/endpoints/local-model/prefetchFetch the small model's weights ahead of being asked
Downloads the curated instant model into the workspace cache so that adding it later costs nothing. Stopping leaves the part file, so a later start resumes from where this one stopped rather than beginning again.
What you send
| Field | Type | Where |
|---|---|---|
actionrequired | "start" | "stop" | body |
What comes back
| Field | Type |
|---|---|
model | string |
state | "idle" | "downloading" | "held" | "failed" |
receivedBytes | integer |
totalBytes | integer |
detail | string |
curl -X POST "$SANDBOX/endpoints/local-model/prefetch" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"action":"start"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.endpoints.localModelPrefetch({
"action": "start"
});