REST API
The Solk CRM JSON API — the same endpoints the mobile app uses, with the same permission rules and the same business rules.
The Solk REST API lets you read and modify the companies, people, opportunities, actions, calendar, fair leads, and email threads in your installation. Solk's iOS / Android app uses this same API, so the endpoints are shaped around a real sales rep's screens: a single request returns everything a screen needs.
Basics
| Base URL | https://<company>.solk.app/api/v1 |
| Format | JSON (Content-Type: application/json); most write endpoints also accept a form body |
| Authentication | Authorization: Bearer <token> — API key, OAuth, or mobile session |
| Character set | UTF-8; Turkish characters are returned as is |
| Dates | YYYY-MM-DD; date-times YYYY-MM-DDTHH:MM:SS (the installation's local time) |
| Rate limit | 300 requests per minute per token — Rate limits |
| Specification | /openapi.json (OpenAPI 3.1) |
Response envelope
Every response is a JSON object with an ok field:
{ "ok": true, "customer": { "id": 31, "name": "Kuzey Plastik Sanayi", "…": "…" } }Error responses include an HTTP status code, a machine-readable error code, and a Turkish message you can show to users; some errors carry extra fields (similar, gate_problems…):
{ "ok": false, "error": "gate", "message": "Viable'a geçmek için: BANT kriterleri 4/4 sağlanmalı …", "gate_problems": ["…"] }All codes: Errors.
Resources
Versioning
The API path /api/v1 is fixed. New fields and endpoints are additive; existing fields are never removed and their meaning never changes. Your client should ignore fields it doesn't recognize. When a breaking change is necessary, a new path (/api/v2) is introduced and announced in advance in the changelog.
Methods for write endpoints
Update endpoints accept PATCH, PUT, and POST interchangeably (for older HTTP clients and the mobile app). Updates are partial: only the fields you send change (the one exception: for a fair lead, sending company rewrites all form fields). To clear a text field, send an empty string (""); a field sent as null is ignored (left unchanged).
Send boolean fields as JSON true / false. In a form body (application/x-www-form-urlencoded), send 1 for true and leave the field empty for false.