API Overview
Discover the Syndic+ API to automate syndicate management from your favorite tools.
What is the Syndic+ API?#
Syndic+ exposes its features via two complementary protocols:
- MCP server (Model Context Protocol) — for AI assistants (Claude, Cursor, Codex, etc.) and agents
- OAuth 2.1 + JWT — for third-party integrations via HTTP
Anything you can do in the interface can be automated via the API: create a co-owner, generate an assessment notice, schedule a meeting, record a maintenance task.
Base URL#
| Environment | URL |
|---|---|
| Production | https://app.syndicplus.ca/api |
| MCP server | https://app.syndicplus.ca/api/mcp |
| Sandbox / testing | https://staging.syndicplus.ca/api |
Available modules#
The API covers 22 modules (181 MCP tools):
| Module | MCP tools |
|---|---|
| Co-owners | 4 |
| Units | 4 |
| Water heaters (Bill 141) | 4 |
| Insurance | 4 |
| Contractors | 4 |
| Meetings | 4 |
| Projects | 4 + 15 (details) |
| Maintenance logbook | 13 |
| Assessment notices | 7 |
| Declaration of co-ownership | 9 |
| Document attachments | 3 |
| Requests | 6 |
| Announcements | 4 |
| Disputes | 6 |
| Accounting | 13 |
| Compliance | 3 |
| Space reservations |
See MCP Server for the full list.
Authentication#
Three supported methods:
- OAuth 2.1 + PKCE — recommended for third-party applications, with user consent flow
- API keys (
sk_*) — generate from/dashboard/settings/developer, simple for scripts - Session cookie — for internal calls from the front-end
See Authentication for details.
Request format#
All APIs accept and return JSON. Dates are in ISO 8601 with the Montreal timezone (America/Montreal).
Example — List co-owners#
curl https://app.syndicplus.ca/api/mcp \
-H "Authorization: Bearer sk_your_key" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_co_owners",
"arguments": {}
}
}'
Response#
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "[{ \"id\": \"...\", \"firstName\": \"Marie\", ... }]"
}
]
}
}
Standardized errors#
All errors follow the JSON-RPC 2.0 format:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32000,
"message": "NOT_AUTHENTICATED"
}
}
Error messages are codes (untranslated), to be used in your application logic. Natural-language translation happens client-side.
Limits#
See Rate Limits for per-plan limits.