Set up your development environment and build integrations with the COR API
This guide helps you configure your development environment, obtain API credentials, and implement best practices for building robust integrations with COR.
COR provides three API services that work together to manage your projects, resources, and external integrations.
COR API
Base URL:https://api.projectcor.com/v1Main API for projects, tasks, clients, users, time tracking, and transactions.
Resource Allocation API
Base URL:https://planner.svc.v2.projectcor.comDedicated service for managing user capacity and project allocations.
Integrations API
Base URL:https://integrations.projectcor.com/Service for external system integrations with external ID mapping and bidirectional sync.
All three APIs share the same authentication. Use your access token from the main COR API to authenticate requests to the Resource Allocation API and Integrations API.
Use the page and perPage parameters to navigate through results:
def get_all_projects(access_token): """Fetch all projects across all pages.""" all_projects = [] page = 1 while True: response = requests.get( 'https://api.projectcor.com/v1/projects', params={'page': page, 'perPage': 50}, headers={'Authorization': f'Bearer {access_token}'} ) result = response.json() # Add projects from current page all_projects.extend(result['data']) # Check if we've reached the last page if page >= result['lastPage']: break page += 1 return all_projects
async function getAllProjects(accessToken) { const allProjects = []; let page = 1; let lastPage = 1; do { const response = await fetch( `https://api.projectcor.com/v1/projects?page=${page}&perPage=50`, { headers: { 'Authorization': `Bearer ${accessToken}` } } ); const result = await response.json(); allProjects.push(...result.data); lastPage = result.lastPage; page++; } while (page <= lastPage); return allProjects;}
By default, list endpoints return 20 items per page. You can increase this up to 50 with the perPage parameter to reduce the number of requests. Set page=false to disable pagination entirely (use with caution on large datasets).