API Overview
The Projects.ink REST API gives you programmatic access to your projects, tasks, sprints, groups, comments, and more — from your own applications, scripts, or integrations.
Quick Start
# 1. Create an API key in Settings → API Keys
# 2. Make your first request:
curl -H "Authorization: Bearer cyp_pub_xxxxxxxxxxxxxxxxxxxx" \
https://projects.cyrus365.com/api/v1/projects
Base URL
All API requests use the following base URL:
https://projects.cyrus365.com/api/v1Key Details
| Detail | Value |
|---|---|
| Authentication | Bearer token (Authorization: Bearer <key>) |
| Format | JSON request / response |
| Rate Limit | Plan-based (see breakdown below) |
| Pagination | Page-based (page, perPage, max 200) |
Rate Limits by Plan
| Plan | Rate Limit |
|---|---|
| Free | 60 req/min |
| Pro | 300 req/min |
| Founder | 300 req/min |
| Enterprise | 1,200 req/min |
Response Format
Success (single resource)
{
"data": { "id": "clxyz...", "title": "My Project" }
}Success (list)
{
"data": [ { "id": "..." }, { "id": "..." } ],
"meta": {
"page": 1,
"perPage": 50,
"total": 142,
"totalPages": 3
}
}Error
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Title is required"
}
}Rate Limit Headers
Every response includes rate limit information:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1718467260
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid API key |
FORBIDDEN | 403 | Insufficient scope or project access |
NOT_FOUND | 404 | Resource not found |
VALIDATION_ERROR | 422 | Invalid request body or parameters |
RATE_LIMITED | 429 | Rate limit exceeded — wait and retry |
INTERNAL_ERROR | 500 | Server error |
Next Steps
- •Authentication & Keys — Set up API keys and understand scopes
- •Endpoints — Browse available API endpoints
- •Webhooks — Receive real-time event notifications