API
The Synci API is a powerful, REST-based interface designed for developers to automate their financial workflows. Whether you're building custom reporting, integrating with unique budgeting tools, or creating complex automation rules, our API provides the same robust features that power the Synci dashboard.
Written By Matias
Last updated About 4 hours ago
Full API documentation
For a complete reference of all available endpoints, request parameters, and response schemas, please visit our dedicated documentation portal:
The documentation site lets you test requests directly from the browser.
Getting started & authentication
The Synci API uses Personal Access Tokens for authentication. All requests must be made over HTTPS and include your token in the Authorization header.
Generating an access token
Log in to your Synci Dashboard.
Navigate to Developers > Tokens.
Click the green "New token" button.
Provide a descriptive name for the token (e.g., "Custom Reporter Script").
Copy the token immediately. For security reasons, it will only be displayed once. If you lose it, you must revoke it and generate a new one.
Authenticating requests
Include your token as a Bearer token in the HTTP Authorization header:
curl -X GET "https://api.synci.io/api/v1/user" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Accept: application/json"Core API concepts & rate limits
RESTful Design: The API follows standard REST principles, using appropriate HTTP verbs (
GET,POST,PUT,DELETE).JSON Only: All request bodies must be sent as JSON, and all responses are returned in JSON format. Ensure you send the
Content-Type: application/jsonheader.Status Codes: We use standard HTTP status codes:
200 OK: Request successful.201 Created: Resource successfully created.401 Unauthorized: Invalid or missing access token.422 Unprocessable Entity: Validation error (details provided in the response).429 Too Many Requests: Rate limit exceeded.
API Rate Limits
To ensure platform stability, Synci enforces the following rate limits:
If you exceed these limits, you will receive a 429 response. Most rate limits reset every minute.
Key resources
Bank accounts
Bank accounts are the primary containers for your financial data. They are automatically discovered and synced once you establish a connection with a bank.
List Accounts:
GET /api/v1/banks/accountsreturns all accounts linked to your user profile.Fetch Details:
GET /api/v1/banks/accounts/{accountId}Manual Sync:
POST /api/v1/banks/accounts/{accountId}/sync(Rate limited to 1/min).
Bank transactions
Transactions represent every individual movement of money. These are the primary objects modified by rules and moved via transfer links.
List Transactions:
GET /api/v1/banks/transactionsFiltering: Use query parameters like
bank_account_idto narrow down the list.Details:
GET /api/v1/banks/transactions/{transactionId}retrieves full metadata, including remittance information and generated fields.
Connections, destinations & transfer links
Bank Connections: Link new institutions using
POST /api/v1/banks/connections.Budgeting Destinations: Connect to YNAB or Lunch Money via the
/api/v1/destinations/endpoints.Transfer Links: Define the sync link between a
bank_account_idand a destination.Rules: Create automations that trigger on bank transactions to clean payees, calculate amounts, or set categories.
Monitoring & debugging
The API provides deep visibility into your automations via logs.
Transfer Logs:
GET /api/v1/transfer-logsshows the status of every transaction delivery attempt.Rule Logs:
GET /api/v1/rule-logsprovides an audit trail of every rule action taken on a transaction.Undo Actions: Most modifications can be reverted via the API using the
/undoendpoints on specific logs.
Statistics & analytics
Gain insights into your transaction volume and transfer history.
Bank Stats:
GET /api/v1/stats/bank/transactionsTransfer Stats:
GET /api/v1/stats/transfer
Pro Tips
Smart IDs: Always use the
bank_account_idfound in the account list to filter your transaction requests for better performance.Check Plan Limits: If a
POSTrequest fails with a403, verify if you have reached the limits of your current plan (e.g., maximum number of active bank connections).Versioned Routes: Our API is versioned (currently
/v1/) to ensure long-term stability for your integrations. Always use the versioned prefix in your URLs.