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

# Integrations overview

> Connect an external system once, then provision its actions as skills on any agent.

An **integration** is a connection to an external system — a calendar, a spreadsheet, a store.
You connect the provider once for your organization, then turn its actions into [skills](/concepts/skills)
on any agent. No glue code: the action's parameters become the values the agent collects from the
caller, and the platform runs the call.

## The model: catalog → connect → provision

<Steps>
  <Step title="Browse the catalog">
    `GET /integrations/catalog` returns every connectable provider — its display name, category,
    a short blurb, a logo slug, how many actions it exposes, whether it ships a preset pack
    (`hasPack`), and whether your org has already connected it. The dashboard renders this as a card
    grid; you can render your own. A provider with `actionCount: 0` and `hasPack: true` is
    pack-based — install its [Connector Pack](#beyond-pre-built-actions-map-fields-yourself) rather
    than provisioning individual actions.
  </Step>

  <Step title="Connect the provider">
    `POST /integrations/{kind}/connect`. OAuth providers return an `oauthUrl` to open in a
    browser; API-key providers accept `{ "credentials": { … } }` and connect immediately.
  </Step>

  <Step title="Provision actions as skills">
    `POST /agents/{agentId}/integrations/{kind}/provision` creates one skill per action. Omit
    `actions` to provision every important action, or pass a list of action slugs.
  </Step>

  <Step title="Publish">
    Provisioning edits the agent **draft**. [Publish](/concepts/agents) so phone and chat serve
    the new skills.
  </Step>
</Steps>

## Beyond pre-built actions: map fields yourself

For any provider whose schema can be introspected, you're not limited to its pre-built actions —
**discover** its full schema and **map** any field onto your agent:

<Steps>
  <Step title="Discover the schema">
    `POST /integrations/{kind}/discover` introspects the provider into a normalized catalog of
    every object, field, relationship, and operation.
  </Step>

  <Step title="Read it">
    `GET /integrations/{kind}/schema` returns that catalog to map from.
  </Step>

  <Step title="Map a binding">
    `POST /agents/{id}/integrations/{kind}/bindings` maps an operation's inputs to your agent's
    parameters and projects the fields you want back — compiling to a skill.
  </Step>
</Steps>

Walk through it in [Map an integration's fields](/guides/map-integration-fields), or see the
[Integrations concept](/concepts/integrations) for how the two models compare.

Two shortcuts skip the hand-mapping:

* **Auto-map from a goal** — `POST /agents/{agentId}/integrations/{kind}/bindings/auto` turns a
  plain-language goal into a validated binding (saved as a draft to review).
* **Install a preset pack** — providers that ship a **Connector Pack** install ready-made skills in
  one call: `POST /agents/{agentId}/integrations/{kind}/pack/install`.

## Live vs reserved

The catalog only lists providers you can connect today. Reserved providers (for example Calendly,
HubSpot, Square, OpenTable) are coming soon and do not appear yet.

| Provider                                                      | Auth        | Status                 |
| ------------------------------------------------------------- | ----------- | ---------------------- |
| [Google Calendar](/integrations/google-calendar)              | OAuth       | Live                   |
| [Google Sheets](/integrations/google-sheets)                  | OAuth       | Live                   |
| [Shopify](/integrations/shopify)                              | API key     | Live                   |
| [SQL database — Postgres & MySQL](/integrations/sql-database) | Credentials | Live                   |
| Calendly, HubSpot, Square, OpenTable                          | —           | Reserved (coming soon) |

Need something not listed? Build a [custom integration](/integrations/custom) with an
`http_webhook` skill that calls your own endpoint.

## In the API

| Action                         | Endpoint                                                                                    | Scope                |
| ------------------------------ | ------------------------------------------------------------------------------------------- | -------------------- |
| Browse the provider catalog    | `GET /integrations/catalog`                                                                 | `integrations:read`  |
| List connected integrations    | `GET /integrations`                                                                         | `integrations:read`  |
| Connect a provider             | `POST /integrations/{kind}/connect`                                                         | `integrations:write` |
| List a provider's actions      | `GET /integrations/{kind}/actions`                                                          | `integrations:read`  |
| Provision actions as skills    | `POST /agents/{agentId}/integrations/{kind}/provision`                                      | `skills:write`       |
| Discover a provider's schema   | `POST /integrations/{kind}/discover`                                                        | `integrations:write` |
| Read the discovered schema     | `GET /integrations/{kind}/schema`                                                           | `integrations:read`  |
| Browse objects / operations    | `GET /integrations/{kind}/objects` · `GET /integrations/{kind}/operations`                  | `integrations:read`  |
| Map a binding (open model)     | `POST /agents/{agentId}/integrations/{kind}/bindings`                                       | `skills:write`       |
| Auto-map a binding from a goal | `POST /agents/{agentId}/integrations/{kind}/bindings/auto`                                  | `skills:write`       |
| Read / install a preset pack   | `GET /integrations/{kind}/pack` · `POST /agents/{agentId}/integrations/{kind}/pack/install` | `skills:write`       |
| Remove provisioned skills      | `DELETE /agents/{agentId}/integrations/{kind}/provision`                                    | `skills:write`       |
| Disconnect a provider          | `DELETE /integrations/{kind}`                                                               | `integrations:write` |

<Note>
  `GET /integrations` and the catalog return **status only** — connected tokens are stored
  encrypted and never echoed back.
</Note>

Authenticate every call with `Authorization: Bearer flowyte_sk_…` (see
[Authentication](/get-started/authentication)). Never send an organization header with an API key.

```bash theme={null}
curl https://builder.flowyte.com/api/v1/integrations/catalog \
  -H "Authorization: Bearer flowyte_sk_…"
```
