- Price
- 120 UAH/mo
- For
- services, food service, shops
- Required modules
- Products, Orders
What it does
A site or app built your own way sends products, orders and customers to anyCRM over a REST API, adding new ones and updating those already there.
What you need
- A developer to add a few HTTP requests to the site.
Where to get the keys
- In anyCRM, on the “API for your site” module page, press Connect.
- Copy the token (acapi_…) and press Save. It is shown only once: keep it in the site’s settings.
- Send requests as described below.
API
Base URL: https://api.anycrm.io/api/v1/. Every request is a POST with JSON and the header Authorization: Bearer acapi_…. The body is one object, a list, or {"products": [...]} (orders, customers), up to 500 records.
POST /api/v1/products
A product is matched by your id, and a new one by SKU among existing products. A product with variants becomes their card, each variant a product of its own. quantity sets the stock in anyCRM. Required: id, title; for a variant, id. If anyCRM already has products that did not come from this API, new ones are not created on their own: they wait in Unlinked ("linked": false) until you link them or switch on “Create new products” in ⚙.
curl https://api.anycrm.io/api/v1/products \
-H "Authorization: Bearer acapi_..." -H "Content-Type: application/json" \
-d '{"products": [{
"id": "15", "title": "T-shirt", "sku": "TS", "price": 450, "currency": "uah",
"category": "Clothes", "description": "...", "images": ["https://.../1.jpg"],
"url": "https://shop.example/ts", "available": true,
"params": {"Material": "Cotton"},
"variants": [
{"id": "m", "title": "M", "sku": "TS-M", "quantity": 3},
{"id": "l", "title": "L", "sku": "TS-L", "price": 480, "quantity": 0}
]
}]}'{"ok": true, "products": [{"id": "15", "product_id": 301, "linked": true}, {"id": "15-m", "product_id": 302, "linked": true}]}POST /api/v1/orders
A new order is created with its customer (found by phone) and takes its goods from stock. Sending the same id again updates its status and waybill; an order completed or canceled in anyCRM stays so. Statuses: new, processing, shipped, completed, canceled. A line with product_id (and variant_id) is linked to the product sent before; without it, it is a plain line with a title and price.
{
"id": "A-1042", "status": "new", "date": "2026-09-30T12:00:00Z", "currency": "uah",
"customer": {"first_name": "Olena", "last_name": "Koval", "phone": "+380671234567", "email": "o@example.com"},
"items": [
{"product_id": "15", "variant_id": "m", "title": "T-shirt M", "qty": 2, "price": 450},
{"title": "Gift wrap", "qty": 1, "price": 30}
],
"shipping": "Nova Poshta", "shipping_cost": 80, "city": "Kyiv", "address": "Branch 12",
"ttn": "", "payment_method": "card", "paid": true, "comment": "Call first"
}{"ok": true, "orders": [{"id": "A-1042", "order_id": 518, "created": true, "status": "newOrder"}]}POST /api/v1/customers
A customer is matched by phone, then by email; at least one is required. The fields sent are updated, the rest are kept.
{"first_name": "Olena", "last_name": "Koval", "middle_name": "", "company_name": "", "phone": "+380671234567", "email": "o@example.com", "notes": "VIP"}Errors
An error answer is {"ok": false, "error": "..."} with a code: 400 not JSON, 401 bad token, 403 module switched off, 413 over 500 records, 422 a missing field or a wrong value (a price or quantity that is not a number). A request is safe to repeat.
Connecting in anyCRM
- Open Modules in anyCRM, find “API for your site” and press Enable.
- Go to the module’s page in the side panel and press Connect.
- The account appears in the list with a green tick. An error, if any, shows in red under its name.
Good to know
- The token is access to your data. Lost it, or it got out? Delete the connection and make a new one: the old token stops working at once.
- The API only adds and updates: nothing can be read or deleted through it.
Can’t get it connected? Write to us and we’ll help.