---
title: "Developers"
description: "Pick your way into Lookio, the REST API, the TypeScript SDK, the MCP server or the CLI, with how they compare, how they authenticate, and where to start."
canonical: "https://lookio.app/docs/developers/overview"
updated: "2026-11-08"
---

# Developers

Your code can do everything the app does, through the REST API, the TypeScript SDK, the MCP server or the CLI. All four use the same objects, permissions and prices.

```mermaid title="Four ways in, one service layer"
flowchart LR
  P["Your product"] --> API["REST API<br/>api.lookio.app/v1"]
  P --> SDK["TypeScript SDK<br/>@lookio/sdk"]
  AG["AI agent"] --> MCP["MCP server<br/>mcp.lookio.app/mcp"]
  AG --> CLI["CLI<br/>@lookio/cli"]
  SDK --> API
  CLI --> API
  API --> S["Lookio service layer<br/>permissions, credits, logs"]
  MCP --> S
```

## Choose your way in

| You want to…                                                        | Use                                   | Start with                                    |
| ------------------------------------------------------------------- | ------------------------------------- | --------------------------------------------- |
| Call an assistant from your backend, in any language                | **REST API**                          | [REST API](/docs/developers/api)              |
| Do the same from TypeScript or JavaScript, with types and streaming | **SDK**                               | [TypeScript SDK](/docs/developers/sdk)        |
| Let Claude, ChatGPT or Cursor read and manage your workspace        | **MCP server**                        | [MCP server](/docs/developers/mcp/overview)   |
| Script Lookio, run it in CI, or let a coding agent drive it         | **CLI**                               | [CLI](/docs/developers/cli/overview)          |
| Plug Lookio into n8n, Make or Zapier                                | **REST API** from the automation tool | [Integrations](/docs/developers/integrations) |
| Ask assistants someone shared with you                              | **Access address**                    | [Call an access](/docs/developers/accesses)   |

## Two kinds of address

### Your workspace

`https://api.lookio.app/v1` and `https://mcp.lookio.app/mcp`.

Use an **API key** or a **personal connection**. Manage resources and assistants, ask questions, read logs.

### An access

`https://api.lookio.app/a/{access_id}` and its `/mcp`.

Open to anyone with the address, or protected by an **access key** (`ak_live_…`) for each client. Callers can only ask the assistants it shares. See [Call an access](/docs/developers/accesses).

## Authenticate

| Credential          | Looks like            | For                                   | Get it                                                                                             |
| ------------------- | --------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------- |
| API key             | `sk_live_…`           | Your product, servers, automations    | **Developer tools**, then **Create key**. See [API keys](/docs/guides/api-keys).                   |
| Personal connection | OAuth, in the browser | You, through the CLI or an MCP client | `lookio auth login`, or add the MCP server. See [Authentication](/docs/developers/authentication). |
| Access key          | `ak_live_…`           | People outside your workspace         | The owner of an access.                                                                            |

For a backend, use an API key. It does not depend on a person. Each key has scopes, such as `resources:write` or `query`, and can be limited to some assistants. See [Authentication and scopes](/docs/developers/authentication).

![Developer tools in the app: the API tab with the base URL https://api.lookio.app/v1 and two API keys](/docs/images/app/developer-tools.webp)

_Developer tools: the base URL and the API keys of the workspace._

## Your first call

```bash
curl https://api.lookio.app/v1/assistants/ASSISTANT_ID/query \
  -H "Authorization: Bearer $LOOKIO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"question": "How do I issue a credit note?"}'
```

The **API** button on each assistant's sheet gives this call, in curl, the CLI and JavaScript. For all the steps, see the [Quickstart](/docs/get-started/quickstart).

## Rules that apply everywhere

[**Conventions**](/docs/developers/conventions)

Ids, pagination with cursors, idempotency, dates.

[**Errors**](/docs/developers/errors)

One error shape, and every code with what to do.

[**Rate limits**](/docs/developers/rate-limits)

How many calls, and how to wait.

[**Streaming**](/docs/developers/streaming)

Show an answer while it is written.

## Machine-readable

- [OpenAPI document](/docs/openapi.json): every endpoint, parameter and error code.
- [llms.txt](/docs/llms.txt) and [llms-full.txt](/docs/llms-full.txt): the whole documentation, for an AI agent.
- Every page is also served as Markdown: add `.md` to its address.
