Trade fairs & leads
Bulk actions
Selected leads (max 200): convert — converts with the default matching (already converted ones go to skipped), assign — changes the owner (no permission → skipped). Response done, skipped, errors, msg.
Authorization
AuthorizationheaderrequiredBearer token: API key (sk_…), OAuth access token (mcp_…) or mobile session (xk_…).
Module: Fair leadsScope:
crm.writePath parameters
idintegerrequiredFair id.
Body application/json
actstringrequiredAction.
Values
convertassignidsarray<integer>requiredLead ids.
make_projectbooleanoptionaldefault: Trueconvert: open an opportunity.
make_visitbooleanoptionaldefault: Trueconvert: fair visit.
owner_idintegeroptionalassign: new owner.
Errors
| HTTP | error | Meaning |
|---|---|---|
400 | invalid | Missing or invalid field (`message` explains). |
404 | not_found | Record not found. |
403 | module | The module is off in the licence or for the user. |
Request
curl -X POST https://ornek.solk.app/api/v1/fairs/1/leads/bulk \
-H "Authorization: Bearer $SOLK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"act": "assign",
"ids": [
2,
3
],
"owner_id": 1
}'const res = await fetch("https://ornek.solk.app/api/v1/fairs/1/leads/bulk", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SOLK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"act": "assign",
"ids": [
2,
3
],
"owner_id": 1
}),
});
const data = await res.json();import os, requests
r = requests.post(
"https://ornek.solk.app/api/v1/fairs/1/leads/bulk",
headers={"Authorization": f"Bearer {os.environ['SOLK_API_KEY']}"},
json={
"act": "assign",
"ids": [
2,
3
],
"owner_id": 1
},
)
print(r.json())Response
{
"done": [
2,
3
],
"msg": "2 leadin sorumlusu: Deniz Aksoy.",
"ok": true,
"skipped": []
}Example responses were captured from a v54 installation running sample data; lists are shortened to two items.