> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.ollang.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How It All Connects

> How Ollang APIs, the MCP server, the SDK, Skills, and platform workflows fit together — and when to use each.

# How It All Connects

Ollang exposes the same underlying platform through four integration surfaces. They are complementary, not exclusive — most teams use two or three of them together.

```
┌──────────────────────┐
│  Olabs Dashboard      │ ← humans: create orders, configure workflows, review
│  (lab.ollang.com)     │
└──────────────────────┘
            │
            ▼
┌──────────────────────────────────────────────────────────────┐
│           Ollang Integration API  (api-integration.ollang.com)│
│  REST endpoints for uploads, orders, projects, QC, revisions,  │
│  human review, custom instructions, folders, callbacks.         │
└──────────────────────────────────────────────────────────────┘
       ▲                ▲                 ▲                ▲
       │                │                 │                │
       │                │                 │                │
┌──────┴─────┐  ┌───────┴──────┐  ┌───────┴──────┐  ┌──────┴──────┐
│  Your code  │  │  Ollang MCP   │  │  Ollang SDK   │  │ Ollang      │
│  (curl,     │  │  (Cloudflare,  │  │  (npm,        │  │ Skills      │
│   HTTP libs)│  │   OAuth 2)     │  │   TypeScript) │  │ (file-based)│
└────────────┘  └────────────────┘  └───────────────┘  └─────────────┘
```

## The Four Integration Surfaces

<CardGroup cols={2}>
  <Card title="REST API" href="/apis/ollang-api-reference/direct-file-upload" icon="code">
    Programmatic access. Works in any language with an HTTP client. API-key authenticated.
  </Card>

  <Card title="MCP Server" href="/mcp/overview" icon="robot">
    Hosted Model Context Protocol endpoint. Plug into Claude Desktop, Cursor, Claude Code, Devin, Replit, Windsurf, and other MCP clients. OAuth 2.0 + PKCE.
  </Card>

  <Card title="SDK" href="/sdk/overview" icon="layer-group">
    TypeScript/Node.js library (`@ollang-dev/sdk`) for asset scanning, i18n workflows, CMS capture, and a typed REST client.
  </Card>

  <Card title="Skills" href="/skills/overview" icon="wand-magic-sparkles">
    File-based [Agent Skills](https://skills.sh) bundle that teaches your AI coding agent how to call Ollang. No proxy server, no MCP needed.
  </Card>
</CardGroup>

## When to Use Which

| Scenario                                                                                                | Best fit                                                            |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| Build a translation pipeline from a backend or CI job                                                   | **REST API** (any language) or **SDK** (if Node.js)                 |
| Let translators / PMs trigger work from their AI assistant (Claude, Cursor, Devin) without writing code | **MCP**                                                             |
| Localize an internal Next.js / React / Vue app's i18n files                                             | **SDK** Asset Management                                            |
| Localize CMS content (Strapi, custom) captured live in the browser                                      | **SDK** Browser SDK                                                 |
| Add translation to an existing AI coding workflow without running a server                              | **Skills**                                                          |
| Trigger orders from no-code/low-code tools (Airtable, Notion)                                           | **MCP** with the matching [integration](/mcp/integrations/airtable) |
| Run Ollang as part of a workflow editor / agent runtime                                                 | **MCP** (preferred) or **REST API** if you can't run MCP            |

## Authentication at a Glance

| Surface    | Auth                                                                                                |
| ---------- | --------------------------------------------------------------------------------------------------- |
| REST API   | API key in `X-Api-Key` header. Generate one in the [Olabs Dashboard](https://lab.ollang.com).       |
| MCP Server | OAuth 2.0 + PKCE. Sign in with email OTP, Google, or GitHub the first time you connect.             |
| SDK        | API key (via `OLLANG_API_KEY` env var or constructor argument).                                     |
| Skills     | API key. The agent reads `OLLANG_API_KEY` from your environment or asks you to provide one in chat. |

<Note>
  All MCP traffic still flows through the same Integration API behind the
  scenes — MCP is a protocol layer that translates conversational tool calls
  into Ollang REST calls.
</Note>

## A Concrete End-to-End Example

A typical localization flow — phrased four ways:

<Tabs>
  <Tab title="REST API (curl)">
    ```bash theme={null}
    # 1. Upload
    curl -X POST "https://api-integration.ollang.com/integration/upload/direct" \
      -H "X-Api-Key: <your-api-key>" \
      -F "file=@sample.mp4" \
      -F "name=sample" \
      -F "sourceLanguage=en"
    # → { "projectId": "<project-id>" }

    # 2. Create subtitle order for French + Spanish
    curl -X POST "https://api-integration.ollang.com/integration/orders/create" \
      -H "X-Api-Key: <your-api-key>" \
      -H "Content-Type: application/json" \
      -d '{
        "orderType": "subtitle",
        "level": 0,
        "projectId": "<project-id>",
        "targetLanguageConfigs": [{"language":"fr"},{"language":"es"}],
        "autoQc": true
      }'
    # → [{ "orderId": "<id-fr>" }, { "orderId": "<id-es>" }]
    ```
  </Tab>

  <Tab title="SDK (TypeScript)">
    ```typescript theme={null}
    import Ollang from "@ollang-dev/sdk";

    const ollang = new Ollang({
      apiKey: process.env.OLLANG_API_KEY,
    });

    const { projectId } = await ollang.uploads.uploadFile({
      file: "./sample.mp4",
      name: "sample",
      sourceLanguage: "en",
    });

    const orders = await ollang.orders.create({
      projectId,
      orderType: "subtitle",
      level: 0,
      targetLanguageConfigs: [{ language: "fr" }, { language: "es" }],
      autoQc: true,
    });
    ```
  </Tab>

  <Tab title="MCP / Skills (natural language)">
    ```
    Upload https://example.com/sample.mp4 to Ollang as English, then create
    a subtitle order for French and Spanish with auto QC enabled. Report
    the order IDs.
    ```

    The AI assistant calls `uploadFile` → `createOrder` on your behalf and prints the resulting `orderId`s. Large files such as videos upload from a URL; smaller local files (e.g., PDF or DOCX documents) can be passed directly as base64-encoded content.
  </Tab>
</Tabs>

In all four cases:

1. The same upload endpoint runs (`POST /integration/upload/direct`).
2. The same order endpoint runs (`POST /integration/orders/create`).
3. The same project / order records are created in your Ollang account.
4. The same callback fires (if you set one).

## Workflows Apply Equally Everywhere

The **workflow** layer (which AI providers run, which review gates apply, which custom instructions are used) is configured in the [Olabs Dashboard](https://lab.ollang.com) at the Global or Folder level. It applies the same way no matter which surface created the order. See [Workflows and Provider Architecture](/workflows-provider-architecture).

This means:

* A developer creating an order via the REST API gets the same provider routing and review-gate behavior as a PM creating one in the dashboard, or an AI agent creating one via MCP.
* Changing a folder workflow affects all future orders into that folder, regardless of where they originate.

## Picking a Path — Quick Recommendations

* **Just exploring?** Run through [Getting Started](/getting-started) with `curl`.
* **Shipping production code?** Use the [REST API](/apis/ollang-api-reference/direct-file-upload) or, on Node.js, the [SDK](/sdk/overview).
* **AI-driven team workflows?** Connect [MCP](/mcp/overview) once and any compatible client can use Ollang.
* **AI-driven developer workflows in your editor?** [Skills](/skills/overview) — one command, no server.
