# Ways in

> Five ways to talk to a Decisio server; all of them send the same JSON to the same route.

Source: https://opendecisio.com/docs/use-from/

A Decisio server speaks TypeSafe’s System One wire format on `POST /v1/systemone`. Anything that can send JSON can use it, and so can a client or framework that already speaks that format. Pick the way that matches what you have.

 

[Figure: Five ways in, one route: every client sends the same JSON. HTTP: curl, or any language that can POST JSON; Python: the standard library, or TypeSafe's SDK; JavaScript and TypeScript: Node's fetch, no package; A System One client you already have: change the address it sends to; A framework: LangChain, Vercel AI SDK, n8n, TanStack AI, Pipecat. All five send the same JSON body to POST /v1/systemone on the server.]

 

## TL;DR

 

With a server running ([Get started](https://opendecisio.com/docs/) starts one), one yes/no question needs no options and no instructions:

 

```
curl http://127.0.0.1:8000/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{"state": "I was charged twice for October. Please refund one.", "questions": {"urgent": {"type": "noul"}}}'
# {"model": "...", "answers": {"urgent": {"type": "noul", "noul": ...}}, "usage": {"input_tokens": ..., "output_tokens": ...}}
```

 

Run against the CPU stand-in at v0.11.1 on 2026-10-14.

  

| Word | Meaning |
| --- | --- |
| wire format | the shape of the request and the answer; Decisio implements TypeSafe’s published System One format |
| route | an address on the server that does one thing; `POST /v1/systemone` asks questions |
| base URL | the address a client sends its requests to, here `http://127.0.0.1:8000` unless `--host` and `--port` say otherwise |

 

## 1. Every way sends the same body

 

The body is a `state` and its `questions`, by name. `GET /v1/models` names the model the server serves, and the answer carries the server’s time in a header (`x-decisio-server-ms`). [The HTTP API](https://opendecisio.com/docs/api/) has every field.

 

## 2. Choose a way in

  

| If you have | Use | Page |
| --- | --- | --- |
| nothing yet, or any language | HTTP | [The HTTP API](https://opendecisio.com/docs/api/) |
| a Python script | the standard library, or TypeSafe’s SDK | [Python](https://opendecisio.com/docs/use-from/python/) |
| a Node or browser app | `fetch`, no package | [JavaScript and TypeScript](https://opendecisio.com/docs/use-from/javascript/) |
| a System One client already | change its address | [System One clients](https://opendecisio.com/docs/migrating/) |
| LangChain, the Vercel AI SDK, n8n, TanStack AI or Pipecat | their TypeSafe integration, pointed here | [Frameworks](https://opendecisio.com/docs/use-from/frameworks/) |

 

Common mistake

There is no authentication: the `Authorization` header and any API key are accepted and ignored. Keep the server on `127.0.0.1`, or behind a reverse proxy that authenticates.

 

## What next

 

- [The HTTP API](https://opendecisio.com/docs/api/): every route, request field and response field.
- [Your first decision](https://opendecisio.com/docs/first-request/): one request and its answer, line by line.
- [Teaching it a task](https://opendecisio.com/docs/tasks/): register a question you ask again and again.
