diff --git a/README.md b/README.md
index 6c846ffd..c9d87340 100644
--- a/README.md
+++ b/README.md
@@ -7,25 +7,25 @@
exo: Run your own AI cluster at home with everyday devices. Maintained by [exo labs](https://x.com/exolabs).
-
-[](https://github.com/exo-explore/exo/stargazers)
-[](https://www.apache.org/licenses/LICENSE-2.0.html)
-
-
+
+
The macOS app requires macOS Tahoe 26.2 or later.
@@ -90,14 +90,113 @@ Download the latest build here: [EXO-latest.dmg](https://assets.exolabs.net/EXO-
The app will ask for permission to modify system settings and install a new Network profile. Improvements to this are being worked on.
+### Using the API
+
+If you prefer to interact with exo via the API, here is a complete example using `curl` and a real, small model (`mlx-community/Llama-3.2-1B-Instruct-4bit`). All API endpoints and request shapes match `src/exo/master/api.py` and `src/exo/shared/types/api.py`.
+
+---
+
+**1. Preview instance placements**
+
+Obtain valid deployment placements for your model. This helps you choose a valid configuration:
+
+```bash
+curl "http://localhost:52415/instance/previews?model_id=mlx-community/Llama-3.2-1B-Instruct-4bit"
+```
+
+Sample response:
+
+```json
+{
+ "previews": [
+ {
+ "model_id": "mlx-community/Llama-3.2-1B-Instruct-4bit",
+ "sharding": "Pipeline",
+ "instance_meta": "MlxRing",
+ "instance": {...},
+ "memory_delta_by_node": {"local": 734003200},
+ "error": null
+ }
+ // ...possibly more placements...
+ ]
+}
+```
+
+This will return all valid placements for this model. Pick a placement that you like.
+
+---
+
+**2. Create a model instance**
+
+Send a POST to `/instance` with your placement in the `instance` field (the full payload must match types as in `CreateInstanceParams`):
+
+```bash
+curl -X POST http://localhost:52415/instance \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "instance": {
+ "model_id": "mlx-community/Llama-3.2-1B-Instruct-4bit",
+ "instance_meta": "MlxRing",
+ "sharding": "Pipeline",
+ "min_nodes": 1
+ }
+ }'
+```
+
+Sample response:
+
+```json
+{
+ "message": "Command received.",
+ "command_id": "e9d1a8ab-...."
+}
+```
+
+---
+
+**3. Issue a chat completion**
+
+Now, make a POST to `/v1/chat/completions` (the same format as OpenAI's API):
+
+```bash
+curl -N -X POST http://localhost:52415/v1/chat/completions \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "model": "mlx-community/Llama-3.2-1B-Instruct-4bit",
+ "messages": [
+ {"role": "user", "content": "What is Llama 3.2 1B?"}
+ ]
+ }'
+```
+
+You will receive a streamed or non-streamed JSON reply.
+
+---
+
+**4. Delete the instance**
+
+When you're done, delete the instance by its ID (find it via `/state` or `/instance` endpoints):
+
+```bash
+curl -X DELETE http://localhost:52415/instance/YOUR_INSTANCE_ID
+```
+
+**Tip:**
+
+- List all models: `curl http://localhost:52415/models`
+- Inspect instance IDs and deployment state: `curl http://localhost:52415/state`
+
+For further details, see API types and endpoints in `src/exo/master/api.py`.
+
+
---
## Hardware Accelerator Support
-On macOS, EXO uses the GPU. On Linux, EXO currently runs on CPU. We are working on extending hardware accelerator support. If you'd like support for a new hardware platform, please search for an existing feature request and add a thumbs up so we know what hardware is important to the community.
+On macOS, exo uses the GPU. On Linux, exo currently runs on CPU. We are working on extending hardware accelerator support. If you'd like support for a new hardware platform, please [search for an existing feature request](https://github.com/exo-explore/exo/issues) and add a thumbs up so we know what hardware is important to the community.
---
## Contributing
-See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to EXO.
+See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to exo.