Syncro API Patterns — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Syncro API Patterns (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Syncro MSP API provides access to tickets, customers, assets, invoices, and more. This skill covers authentication, pagination, rate limiting, error handling, and best practices for API integration.
Syncro uses Bearer token authentication with API keys:
GET /api/v1/tickets
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonexport SYNCRO_API_KEY="your-api-key-here"
export SYNCRO_SUBDOMAIN="your-subdomain" # e.g., "acme" for acme.syncromsp.comThe API base URL uses your subdomain — requests to the wrong subdomain authenticate against a different tenant, so verify it matches the account you intend to hit:
https://{subdomain}.syncromsp.com/api/v1/Example:
https://acme.syncromsp.com/api/v1/ticketsSyncro uses page-based pagination:
GET /api/v1/tickets?page=1
GET /api/v1/tickets?page=2
GET /api/v1/tickets?page=3| Parameter | Description | Default |
|---|---|---|
page | Page number (1-based) | 1 |
There is no page-size parameter — per_page is fixed at 25 by the server and reported back in meta, so a large result set always costs total_pages requests.
Responses include pagination information. Note the collection is keyed by resource name (tickets, customers, ...), not a generic data key:
{
"tickets": [...],
"meta": {
"total_entries": 156,
"total_pages": 7,
"page": 1,
"per_page": 25
}
}See references/examples.md for a working page-walking implementation.
Syncro enforces a rate limit of 180 requests per minute per IP address. Because the limit is per-IP rather than per-key, separate integrations sharing an egress address contend for the same budget.
When rate limited, you receive:
HTTP/1.1 429 Too Many Requests
Retry-After: 30{
"error": "Rate limit exceeded. Please wait before making more requests."
}At 180 req/min, a ~350ms delay between calls keeps a single-threaded client safely under the ceiling.
See references/examples.md for retry-with-backoff and throttled batch-processing implementations.
| Parameter | Description | Example |
|---|---|---|
page | Page number | page=2 |
query | Search term | query=email |
customer_id | Filter by customer | customer_id=123 |
date_from | Start date | date_from=2024-01-01 |
date_to | End date | date_to=2024-01-31 |
mine | Current user only | mine=true |
status | Status filter | status=open |
| Code | Meaning | Action |
|---|---|---|
| 200 | Success | Process response |
| 201 | Created | Resource created |
| 400 | Bad Request | Check request format |
| 401 | Unauthorized | Verify API key |
| 403 | Forbidden | Check permissions |
| 404 | Not Found | Resource doesn't exist |
| 422 | Unprocessable | Validation failed |
| 429 | Rate Limited | Wait and retry |
| 500 | Server Error | Retry with backoff |
Validation failures (422) return a per-field errors array in addition to the top-level error string — read the array, not just the string, to know which field was rejected:
{
"error": "Validation failed",
"errors": [
{
"field": "customer_id",
"message": "is required"
}
]
}See references/examples.md for a request wrapper that maps these statuses to actionable errors.
Syncro follows conventional REST verbs: GET to read, POST to create, PUT to update, DELETE to remove. Sub-resource actions are POST to a named path (e.g. /tickets/{id}/comment, /invoices/{id}/email).
See references/api.md for the complete endpoint catalog, request shapes, and cURL examples.
limit is shared across integrations
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.