This guide walks you through authenticating with the COR API and making your first requests to manage projects, tasks, and time entries.Documentation Index
Fetch the complete documentation index at: https://developers.projectcor.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites: Before you begin, make sure you have your API credentials ready. See the Development guide to learn how to obtain your API Key and Client Secret from the COR dashboard.
Step 1: Get an access token
COR uses OAuth 2.0 for authentication. The Client Credentials flow is recommended for server-to-server integrations.Encode your credentials
First, create a Base64 encoded string of your API Key and Client Secret:WU9VUl9BUElfS0VZOllPVVJfQ0xJRU5UX1NFQ1JFVA==
Request the token
Use your encoded credentials to obtain an access token:Save the
access_token and refresh_token. You’ll use the access token for all API calls.Alternative authentication methods
Authorization Code Flow
Authorization Code Flow
User Credentials Flow
User Credentials Flow
For testing and development purposes only.
Step 2: Verify your authentication
Test your access token by retrieving your user profile:Role IDs:
1 (C-Level), 2 (Director), 3 (Project Manager), 4 (Collaborator), 5 (Freelancer), 6 (Client).If you see your user data, your authentication is working correctly.
Step 3: Explore core endpoints
Now that you’re authenticated, here are the most common operations you’ll perform with the COR API.List your projects
All list endpoints in COR return paginated responses by default. Usepage and perPage parameters to navigate results, and filters to narrow down the data.
Pagination parameters:
page: Page number (default: 1). Set tofalseto disable pagination and get all results.perPage: Items per page (default: 20).
The table below lists filter fields for GET /projects (inside the
filters JSON). GET /tasks uses different keys: use projects (project IDs, not project_id), pm (PM / assignee user IDs on the task, not user_id), and status, plus other task-specific fields—see Get Tasks.Available filter fields (GET /projects)
Available filter fields (GET /projects)
| Field | Type | Description |
|---|---|---|
dateStart | string | Start date range (YYYY-MM-DD) |
dateEnd | string | End date range (YYYY-MM-DD) |
client_id | number | Filter by client ID |
team_id | number | Filter by team ID |
user_id | number | Filter by user/PM ID |
brand_id | number | Filter by brand ID |
product_id | number | Filter by product ID |
status | string | "finished", "in_process", "suspended" |
health | number | 1 (on track), 2 (at risk), 3 (delayed), 4 (critical) |
archived | number | 1 (archived only), 2 (active only) |
List tasks for a project
Tasks are also paginated by default. Use thefilters parameter with a URL-encoded JSON object. Filter by project with the projects key (a single ID or an array of IDs), by assignee with pm, and by workflow state with status. You can also pass an optional order query parameter as URL-encoded JSON for sort hints (see the API reference).
Task status values:
Priority values:
nueva (new), en_proceso (in progress), estancada (stalled), finalizada (completed).Priority values:
0 (low), 1 (medium), 2 (high), 3 (urgent).Log time to a task
Time entries usestart and stop timestamps to track worked hours:
Get your clients
Clients are also paginated by default:Step 4: Refresh your token
Access tokens expire after the time specified inexpires_in (typically 1 hour). Use the refresh token to obtain a new access token:
Handle errors
When something goes wrong, the API returns standard HTTP status codes:| Code | Description | Solution |
|---|---|---|
400 | Bad Request | Check required fields and JSON syntax |
401 | Unauthorized | Refresh or re-obtain access token |
403 | Forbidden | Request necessary permissions from admin |
404 | Not Found | Verify resource ID exists |
429 | Too Many Requests | Implement backoff and retry |
500 | Server Error | Retry with exponential backoff |
401 Unauthorized - Token issues
401 Unauthorized - Token issues
400 Bad Request - Invalid data
400 Bad Request - Invalid data
Common causes:
- Missing required fields in request body
- Invalid date format (use
YYYY-MM-DD) - Malformed JSON
- Check the API Reference for required parameters
- Validate JSON syntax before sending
- Ensure dates use ISO 8601 format
503 Service Unavailable
503 Service Unavailable
Next steps
Congratulations! You’ve successfully authenticated and made your first API calls. Here’s where to go next:Development Guide
Set up your development environment with best practices for token management, error handling, and pagination.
API Reference
Explore all available endpoints with detailed parameters and response schemas.
Projects API
Create, update, and manage projects with budgets, timelines, and team assignments.
Tasks API
Manage tasks, track progress, and handle assignments across your projects.
Time Tracking API
Log hours, manage time entries, and generate reports for billing.
Resource Allocation
Plan team capacity, allocate users to projects, and manage workload distribution.
Integrations API
Connect external systems like Salesforce, Jira, and SAP with bidirectional sync.
Need help? Contact our support team at help@projectcor.com or visit COR Support.

