Solk ERP API
Send products
Sends ERP items; they are matched to CRM products by code (else by name). If update list price is on, price is written to the product's list price. qty, when given, is stored as stock.
Authorization
AuthorizationheaderrequiredSolk ERP API key (erp_…): shown once when a Solk ERP API connection is created under Settings → Accounting & ERP. May also be sent as the
X-Solk-Erp-Key header.Body application/json
itemsarrayrequiredProducts:
ext_id, code, name, unit, price, currency, qty.Errors
| HTTP | error | Meaning |
|---|---|---|
401 | unauthorized | Missing, invalid, expired or revoked token. |
400 | invalid | Missing or invalid field (`message` explains). |
413 | too_many | At most 2,000 records per request. |
429 | rate_limited | Per-minute request limit exceeded (`Retry-After`). |
Request
curl -X POST https://ornek.solk.app/api/erp/v1/products \
-H "Authorization: Bearer $SOLK_ERP_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"ext_id": "153.PU500",
"code": "HS30",
"name": "HS 30 Isıl Yapışma Laki",
"unit": "kg",
"price": 3.2,
"currency": "EUR",
"qty": 5200
}
]
}'const res = await fetch("https://ornek.solk.app/api/erp/v1/products", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SOLK_ERP_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"items": [
{
"ext_id": "153.PU500",
"code": "HS30",
"name": "HS 30 Isıl Yapışma Laki",
"unit": "kg",
"price": 3.2,
"currency": "EUR",
"qty": 5200
}
]
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://ornek.solk.app/api/erp/v1/products",
headers={"Authorization": f"Bearer {os.environ['SOLK_ERP_KEY']}"},
json={
"items": [
{
"ext_id": "153.PU500",
"code": "HS30",
"name": "HS 30 Isıl Yapışma Laki",
"unit": "kg",
"price": 3.2,
"currency": "EUR",
"qty": 5200
}
]
},
)
print(r.json())Response
{
"matched": 1,
"new": 1,
"ok": true,
"received": 1
}Example responses were captured from a v54 installation running sample data; lists are shortened to two items.