Integrations and APIBeta
Send stock changes to Slack, Discord, or a webhook, and call Daizy with an API token
Integrations are on the Business plan. An owner or admin opens Integrations in the sidebar. Destinations and the API are separate pages.
Destinations
A destination is a place Daizy sends a message after a change.
- Slack and Discord use the webhook URL from that app. The message is a short sentence.
- Webhook is any https address. Daizy sends JSON. Copy the signing secret when you create it. Each request includes
X-Daizy-Signature: sha256=<hex>over the raw body.
Choose which events to send: stock in, stock out, move, set, and item created, updated, or archived. Spreadsheet imports do not send one message per row.
Daizy saves the message with the stock change, then sends it a few seconds later. If the other side is down, it tries again after about 1 minute, then 5, then 30. After about 10 failures the destination turns off until you save it again. Send test queues a message without posting stock.
A webhook body looks like this:
{
"id": "event id",
"topic": "stock.received",
"version": 1,
"created_time": "2026-10-02T15:00:00.000Z",
"payload": {}
}
Use id to ignore a repeat. Messages can arrive out of order.
API tokens
Open API and create a token. Daizy shows the secret once. Send it as Authorization: Bearer <token>.
- Read can list items, quantities, and movements.
- Post stock can stock in, stock out, move, and set.
- Create and edit items can add and change items.
- Read contacts can list and open contacts.
- Create and edit contacts can add, change, archive, and activate contacts.
- Read purchases and sales can list and open purchases and sales.
- Create and edit purchases and sales can create, update, finalize, receive, ship, and cancel those documents.
A token that cannot post stock receives 403 if it tries. Each token allows about 60 requests per minute. Over that, Daizy responds 429.
Stock posts require an Idempotency-Key header. If the same key is sent again within a day, Daizy returns the original movement instead of changing quantity twice.
GET /api/v1/items?q=&status=active&limit=50
GET /api/v1/items/by-sku/:sku
GET /api/v1/items/:itemId
POST /api/v1/items
PATCH /api/v1/items/:itemId
GET /api/v1/balances?itemId=&locationId=
GET /api/v1/movements?limit=50
GET /api/v1/movements/:movementId
POST /api/v1/stock/receive
POST /api/v1/stock/issue
POST /api/v1/stock/move
POST /api/v1/stock/set
Pass at least one of itemId or locationId for balances. A stock body uses the same fields as the screen: toLocationId or fromLocationId, optional notes and contactId, and lines of { "itemId", "quantity" }. Move needs both locations. Set uses toLocationId, and the quantity is the new amount on hand. Creating an item needs name and unitId.
MCP
Chat clients connect to https://<your Daizy host>/mcp and send the same Authorization: Bearer <token>. Scopes and the 60 requests per minute limit are the same as the API.
A read token can list items, quantities, movements, locations, and units. Contact tools need the contact options. Purchase and sale tools need the purchase and sale options. The stock tools match the dashboard pages: stock_in, stock_out, stock_move, and stock_set. Each takes an idempotencyKey argument. The same key within a day returns the original movement.