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

# Connect360 API Overview

> Build website chat, customer messaging, and AI-assisted conversation flows with Plato.

Connect360 REST APIs let a trusted backend upload attachments and trigger AI replies.

Use them for:

* Uploading images, PDFs, receipts, and other message assets.
* Downloading private attachment assets.
* Triggering AI-assisted replies for supported chat experiences.

<CardGroup cols={2}>
  <Card title="Attachments" icon="paperclip" href="/api-reference/connect360/attachments">
    Upload files and use attachment assets in messages.
  </Card>

  <Card title="AI Stream" icon="sparkles" href="/api-reference/connect360/ai-stream">
    Trigger AI-assisted replies for supported chat experiences.
  </Card>

  <Card title="Authentication" icon="key-round" href="/api-reference/authentication">
    Send API keys from a trusted backend before calling Connect360.
  </Card>
</CardGroup>

## REST Endpoints

```text theme={null}
POST /api/v1/connect/attachments
GET  /api/v1/connect/assets/[...key]
POST /api/v1/connect/ai-stream
```

## Required Permissions

| Action                            | Permission                                                         |
| --------------------------------- | ------------------------------------------------------------------ |
| Download attachments              | `connect360:conversation:read` or `connect360:conversation:engage` |
| Upload attachments and trigger AI | `connect360:conversation:engage`                                   |

The API key must belong to a workspace member.

## Conversation Model

Connect360 conversations can be organized in a hierarchy.

Top-level conversations are the main thread with a customer or group.

Sub-conversations are child threads under a top-level conversation. They are useful for project threads, order support threads, or topic-specific discussions.

Messages are always sent to a `conversationId`, which can be either a top-level conversation or a sub-conversation.

## Customer Identity

For website or external users, pass a `customer` object or an existing `customerId`.

Do not create website visitors as workspace members.

```ts theme={null}
customer: {
  externalId: "website_user_123",
  name: "Jane Customer",
  email: "jane@example.com",
  phone: "+971500000000",
}
```

Plato can match customers by external id, email, or phone.

## Website Channels

Website integrations can pass `channelIdentifier`.

```ts theme={null}
channelIdentifier: "example.com"
```

Plato normalizes the identifier, creates or reuses a website channel, and attaches it to the conversation.

Use the current website host, such as `example.com` or `shop.example.com`.
