> ## Documentation Index
> Fetch the complete documentation index at: https://devs.izap.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Build on iZap

> The developer platform for WhatsApp-first business automation — a REST API, OAuth 2.0, and an Analytics MCP server for your agents.

iZap runs WhatsApp-first business automation: AI assistants handle customer
conversations, orders, and scheduling. **This is where you build on top of it** —
call the REST API or drive it from an AI agent over the MCP server. Same business
logic, same OAuth 2.0 auth, everywhere.

<Columns cols={2}>
  <Card title="Get an access token and make your first call" icon="rocket" href="/en/quickstart" horizontal cta="Start the quickstart" arrow>
    Zero to an authenticated request in a few minutes.
  </Card>

  <Card title="Open the dashboard" icon="gauge" href="https://dash.izap.ai" horizontal cta="Go to dash.izap.ai" arrow>
    Manage assistants, businesses, and API access.
  </Card>
</Columns>

## Your first call

Exchange credentials for a JWT, then send it as a Bearer token on every request.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.izap.ai/api/v1/auth/jwt/login" \
       -H "Content-Type: application/x-www-form-urlencoded" \
       -d "username=$IZAP_EMAIL&password=$IZAP_PASSWORD"
  # -> {"access_token":"<JWT>","token_type":"bearer"}

  curl "https://api.izap.ai/api/v1/businesses" \
       -H "Authorization: Bearer $IZAP_TOKEN"
  ```

  ```python Python theme={null}
  import os, httpx

  base = "https://api.izap.ai"
  tok = httpx.post(
      f"{base}/api/v1/auth/jwt/login",
      data={"username": os.environ["IZAP_EMAIL"], "password": os.environ["IZAP_PASSWORD"]},
  ).json()["access_token"]

  r = httpx.get(f"{base}/api/v1/businesses", headers={"Authorization": f"Bearer {tok}"})
  print(r.json())
  ```

  ```typescript TypeScript theme={null}
  const base = "https://api.izap.ai";

  const login = await fetch(`${base}/api/v1/auth/jwt/login`, {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      username: process.env.IZAP_EMAIL!,
      password: process.env.IZAP_PASSWORD!,
    }),
  });
  const { access_token } = await login.json();

  const res = await fetch(`${base}/api/v1/businesses`, {
    headers: { Authorization: `Bearer ${access_token}` },
  });
  console.log(await res.json());
  ```
</CodeGroup>

<Note>
  For third-party apps, use the OAuth 2.0 authorization-code + PKCE flow instead of
  storing credentials — see [Authentication](/en/api-reference/authentication).
</Note>

<Tip>
  Skip the boilerplate: `npx @izap/wizard` scaffolds a working REST, MCP, webhook,
  or SSE client into your stack. See the [setup wizard](/en/api-reference/wizard).
</Tip>

## What you can build

<Columns cols={3}>
  <Card title="REST API" icon="code" href="/en/api-reference/introduction">
    Chats, businesses, scheduling, templates, and broadcasts under `/api/v1`. JSON
    in, JSON out, versioned and predictable.
  </Card>

  <Card title="Analytics MCP" icon="robot" href="/en/api-reference/mcp">
    Point Claude, ChatGPT, or your own agent at `{origin}/mcp` and call analytics
    and assistant-management tools directly.
  </Card>

  <Card title="Authentication" icon="key" href="/en/api-reference/authentication">
    One OAuth 2.0 server for both the API and the MCP. Bearer JWTs for
    server-to-server, authorization-code + PKCE for interactive apps.
  </Card>
</Columns>

## Drive iZap from an agent

Register the Analytics MCP as a remote HTTP server and your agent can call iZap's
tools with the same token as the REST API.

```json theme={null}
{
  "mcpServers": {
    "izap": {
      "type": "http",
      "url": "https://api.izap.ai/mcp",
      "headers": { "Authorization": "Bearer ${IZAP_TOKEN}" }
    }
  }
}
```

<Card title="See the full MCP tool catalog" icon="list-check" href="/en/api-reference/mcp" horizontal arrow>
  Assistant management, message stats, conversation analytics, and keyword search.
</Card>

## Environments

| Environment | API origin                    | MCP URL                           |
| ----------- | ----------------------------- | --------------------------------- |
| Production  | `https://api.izap.ai`         | `https://api.izap.ai/mcp`         |
| Staging     | `https://api-staging.izap.ai` | `https://api-staging.izap.ai/mcp` |

<Note>
  The REST API is versioned under `/api/v1`; breaking changes move to a new version
  path. The interactive **Endpoints** reference in the API reference tab is
  generated from the curated OpenAPI spec and is authoritative for request and
  response shapes.
</Note>

## Keep going

<Columns cols={3}>
  <Card title="Quickstart" icon="rocket" href="/en/quickstart">
    The full walkthrough, token to first call.
  </Card>

  <Card title="API status" icon="signal" href="https://api.izap.ai/status">
    Live health of the production API.
  </Card>

  <Card title="AI Trainer" icon="graduation-cap" href="https://trainer.izap.ai/trainer">
    Train and refine your WhatsApp assistants.
  </Card>
</Columns>
