API docs

One endpoint. Every model.

OpenAI-shaped REST API at /api/v1. Bearer key, JSON in, JSON out — billed from the same credit balance as chat.

Start in three steps

1

Create a key

Developer → API keys → Create. Keys look like mp_live_… and carry the scopes they are allowed to use.

2

Set the base URL

Point your client at https://fastmoved.com/api/v1. Anything that speaks OpenAI usually only needs the base URL swapped.

3

Send JSON

POST a model plus messages and read the reply. Each key gets 60 requests per minute.

Authentication

Authentication

Every request carries an Authorization header. Missing, malformed or revoked keys return 401 INVALID_API_KEY.

header · every request
Authorization: Bearer mp_live_…

Scopes

chat:write — completions + model listartifacts:read — read saved artifactsworkflows:run — trigger workflow runs

Endpoints

Endpoints

Four routes cover the whole public surface.

POST/v1/chat/completionschat:write

Generate a completion (non-streaming).

model* · messages* · temperature 0–2 · max_tokens 1–32000 (default 2048)

GET/v1/modelschat:write

List enabled models with vision / reasoning flags.

No parameters

GET/v1/artifactsartifacts:read

List saved Studio artifacts.

?project=<id> to filter by project

POST/v1/workflows/{id}/runsworkflows:run

Trigger a workflow run. Responds 201 with the run.

JSON object matching the workflow inputs

Copy-paste samples

Copy-paste samples

cURL · chat/completions
curl https://fastmoved.com/api/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-terra",
    "messages": [{ "role": "user", "content": "Ship faster." }],
    "max_tokens": 512
  }'
Python · chat/completions
import requests

res = requests.post(
    "https://fastmoved.com/api/v1/chat/completions",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "gpt-5.6-terra",
        "messages": [{"role": "user", "content": "Ship faster."}],
        "max_tokens": 512,
    },
    timeout=120,
)
print(res.json()["choices"][0]["message"]["content"])
Node.js · chat/completions
const res = await fetch("https://fastmoved.com/api/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-5.6-terra",
    messages: [{ role: "user", content: "Ship faster." }],
    max_tokens: 512,
  }),
});
const json = await res.json();
console.log(json.choices[0].message.content);

Errors

Every failure is JSON shaped { error: { code, message } }.

401INVALID_API_KEY

Missing or revoked Bearer key.

400INVALID_REQUEST

Body failed validation — check required fields and ranges.

400MODEL_UNAVAILABLE

Unknown or disabled model id. See GET /v1/models.

429Rate limited

Over 60 requests per minute on one key. Back off and retry.

502MODEL_PROVIDER_ERROR

The upstream model failed. Retry — unused reservation is released.

Billing

Chat usage reserves credits upfront from token estimates, then settles on reported usage — cached input counts at 10% weight. Per-model rates are on Pricing; one balance pays for chat and API alike.