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/v1

Key Details

DetailValue
AuthenticationBearer token (Authorization: Bearer <key>)
FormatJSON request / response
Rate LimitPlan-based (see breakdown below)
PaginationPage-based (page, perPage, max 200)

Rate Limits by Plan

PlanRate Limit
Free60 req/min
Pro300 req/min
Founder300 req/min
Enterprise1,200 req/min
Rate limits are resolved dynamically from your organization's plan. If your plan changes, the new limit takes effect within 10 minutes.

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

CodeHTTP StatusDescription
UNAUTHORIZED401Missing or invalid API key
FORBIDDEN403Insufficient scope or project access
NOT_FOUND404Resource not found
VALIDATION_ERROR422Invalid request body or parameters
RATE_LIMITED429Rate limit exceeded — wait and retry
INTERNAL_ERROR500Server error

Next Steps