# Integration API overview

> Connect your own ERP, POS or admin system to Message24 by implementing three HTTP endpoints, so Message24 can sync your products and send you orders.

Source: https://docs.message24.net/developers/integrations/overview/

The Message24 Integration API lets any system a business already runs, such as a bespoke ERP, a point-of-sale system or an internal admin panel, feed its product catalog into Message24 and receive the orders the AI agent captures in chat. You implement a small HTTP API on your side; Message24 calls it. There is nothing to install and no Message24 code to wait for.

:::tip[Full specification]
The endpoints, payloads, field rules and sync behaviour are defined in the [Integration API specification](/developers/integrations/integration-api/). This page is the orientation; the specification is the contract.
:::

## Who this is for

Developers of a system that holds a business's catalog, when that business uses Message24 and none of the ready-made integrations fit. If the shop runs Shopify, WooCommerce, ERPNext or another platform Message24 already supports, the owner can connect it directly without any development: see [Integrations for business owners](/owners/integrations/overview/).

## How it works

Message24 pulls from you. You never call Message24.

| Method | Path on your base URL | Required | Purpose |
|---|---|---|---|
| `GET` | `/` | yes | Discovery: your system's name, API version and capabilities. Also the connection test. |
| `GET` | `/products` | yes | The catalog, paginated. |
| `POST` | `/orders` | only if you declare the `orders` capability | Receive an order captured in chat. |

You choose the base URL, for example `https://erp.acme.com/message24`, and you issue the API key. Message24 sends the key as `Authorization: Bearer <key>` on every request. Your endpoint must be HTTPS and reachable from the public internet: a base URL entered with `http://` is upgraded to `https://`, and private or loopback addresses are refused.

Once connected, Message24 syncs products on a schedule and whenever the business presses **Sync**. Products it imports appear in the business's catalog, and the AI agent searches and sells from them. If your system declares `orders` and the business turns order sending on, each order reaching the chosen stage is posted to `/orders`, with an `Idempotency-Key` header so retries don't create duplicates.

## Connecting a business

The business, not the developer, makes the connection. A business admin:

1. Opens **Settings > Integrations** in Message24 and chooses **Integration API**.
2. Enters the **API address** (your base URL) and the **API key** you issued.
3. Presses **Verify**. Message24 calls `GET /` and shows your system's name and "Supports:" followed by the capabilities you declared. A failure here shows your error message, or the reason the response was rejected.
4. Optionally turns on **Send orders to this system** and picks **Send orders when they are** New or Confirmed. The toggle is only available when your discovery response lists `orders`.
5. Presses **Connect**, then **Sync** to run the first import.

The key is stored encrypted and never shown again. To rotate it, the admin opens the integration's settings, presses **Change** and enters the new key.

The Integration API card also has **Full Sync**, which walks the whole catalog and deactivates products you no longer list, and a **Sync Activity** log that shows each run, including products that failed to import and why.

## Testing your implementation

1. **Run the checklist.** The specification ends with a list of checks, each a failure seen from an integration that appeared to work: authentication, pagination, stable IDs, idempotent orders and publicly reachable images. Go through it before handing over the URL.
2. **Call your endpoints as Message24 will.** For example:

   ```bash
   curl -s https://erp.acme.com/message24/ \
     -H "Authorization: Bearer $M24_KEY" \
     -H "Accept: application/json" \
     -H "X-Message24-API-Version: 1"

   curl -s "https://erp.acme.com/message24/products?page=2&limit=100" \
     -H "Authorization: Bearer $M24_KEY" \
     -H "Accept: application/json" \
     -H "X-Message24-API-Version: 1"
   ```

3. **Connect a test business.** Ask the business owner, or anyone who is an admin of a Message24 business, to connect your endpoint as described above and press **Verify**, then **Sync**. Read **Sync Activity** for the result and any per-product errors.
4. **Check the catalog.** Confirm names, prices, categories, variants and images look right in the business's products list before relying on the AI agent to sell from them.
5. **Test orders last.** If you implement `/orders`, turn on **Send orders to this system**, create a test order in the business's Message24 account and move it to the stage you chose, then confirm it arrived exactly once in your system.

## Where to go next

- [Integration API specification](/developers/integrations/integration-api/): every endpoint, field and sync rule, with a minimal Express implementation.
- The same specification is served as Markdown at `https://message24.net/api/integrations/spec` for tools that want the raw file.
- [Integrations for business owners](/owners/integrations/overview/): the ready-made integrations that need no development.
