Skip to content

Product Development · Beta

Forecast
API integration

Ship Product Development features without building the integration. Full Forecast API access via Proxy and 320+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Forecast

Use Cases

Why integrate with Forecast

Common scenarios for SaaS companies building Forecast integrations for their customers.

01

Push closed-won deals into Forecast as projects

CRM and sales platforms can automatically create Forecast clients, projects, and rate cards the moment a deal is won, eliminating manual project setup for professional services teams.

02

Sync invoices and payments with accounting systems

Accounting and ERP platforms can pull approved Forecast invoices and expense items into the general ledger, then push payment status back so finance teams get a unified view of billable work.

03

Provision people and protect capacity from HRIS data

HRIS and workforce platforms can create Forecast persons for new hires, sync skills, and block capacity via non-project time or holiday calendar entries so resource managers never double-book during PTO.

04

Power client-facing portals with live project data

Customer success and client portal products can display Forecast projects, phases, tasks, and burnt hours in a white-labeled experience without giving end-clients direct Forecast access.

05

Convert support tickets into billable work

Helpdesk and ITSM platforms can turn escalated tickets into Forecast tasks or tickets and sync status back, so support agents see delivery progress without leaving their tool.

What You Can Build

Ship these features with Truto + Forecast

Concrete product features your team can ship faster by leveraging Truto’s Forecast integration instead of building from scratch.

01

Automated project provisioning

Create Forecast clients, projects, phases, rate cards, and team members in one workflow when a trigger fires in your product.

02

Two-way invoice and payment sync

List Forecast invoices by status, create invoice entries and payments, and keep invoice state consistent between Forecast and your billing system.

03

Real-time time tracking feed

Pull time registrations by project, person, or date range and subscribe to webhook events to stream billable hours into dashboards or payroll.

04

Capacity and utilization analytics

Combine person utilization, allocations, placeholders, and non-project time to visualize billable capacity, idle time, and forecasted bookings.

05

Skills and resource matching

Sync skills, skill levels, and person-skill mappings from your HRIS or L&D product so Forecast resource managers can staff projects based on current certifications.

06

Financial performance dashboards

Pull aggregated financial numbers, retainer periods, and baseline expenses to build executive views of planned vs. actual revenue and project profitability.

SuperAI

Forecast AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_forecast_clients

List all clients in forecast. Returns each client with id, name, street, city, country, notes, created_at, and updated_at.

get_single_forecast_client_by_id

Get a single client in forecast by id. Returns the client with id, name, street, city, country, notes, created_at, and updated_at. Required: id.

create_a_forecast_client

Create a new client in forecast. Returns the created client with id, name, street, city, country, notes, created_at, and updated_at. Required: name.

update_a_forecast_client_by_id

Update an existing client in forecast by id. Returns the updated client with id, name, street, city, country, notes, created_at, and updated_at. Required: id.

delete_a_forecast_client_by_id

Delete a client in forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_company

Get your Forecast company data. Returns: city, contact_email, contact_name, contact_phone, country, currency, company_name, seats, vat_id, virtual_seats, zip, company_target.

forecast_company_bulk_update

Update your Forecast company data. Returns the updated company record: company_name, city, country, currency, contact_email, seats, and company_target. Supply only the fields to change; no field is required.

list_all_forecast_departments

List all departments in Forecast. Returns: id, name.

get_single_forecast_department_by_id

Get a specific department in Forecast by id. Returns: id, name. Required: id.

list_all_forecast_company_contacts

List all company contacts in Forecast. Returns each contact's id, person_id, and contact_type (e.g. PRIMARY).

forecast_company_contacts_bulk_update

Set the person for a specific company contact type in Forecast. Returns: person_id, contact_type. Required: person_id and contact_type (one of PRIMARY, BILLING, DECISION_MAKER, ONBOARDING, TECHNICAL).

forecast_company_contacts_bulk_delete

Remove the person set for a specific company contact type in Forecast. Returns an empty 204 response on success. Required: contact_type.

forecast_custom_fields_update_phase

Set custom field values on a Forecast phase. The body is a map of custom-field keys to values, where keys must be pre-defined in the admin UI for the PHASE entity type. Returns the set key/value pairs (key1, key2, key3). Required: project_id, phase_id.

forecast_custom_fields_update_time_registration

Set custom field values on a Forecast time registration. The body is a map of custom-field keys to values, where keys must be pre-defined in the admin UI for the TIME_REG entity type. Returns the set key/value pairs (key1, key2, key3). Required: time_registration_id.

forecast_custom_fields_update_task

Set custom field values on a Forecast task. The body is a map of custom-field keys to values, where keys must be pre-defined in the admin UI for the TASK entity type. Returns the set key/value pairs (key1, key2, key3). Required: task_id.

forecast_custom_fields_list_options

List the available options for a dropdown-type custom field in Forecast. Returns an array of option records, each with id and name. Required: entity_type (PROJECT, PHASE, TASK, or TIME_REG) and key (the custom field key).

forecast_custom_fields_bulk_update

Set custom field values on a Forecast project. The body is a map of custom-field keys to values, where keys must be pre-defined in the admin UI for the PROJECT entity type. Returns the set key/value pairs (key1, key2, key3). Required: project_id.

list_all_forecast_exchange_rates

List all exchange rates configured in Forecast. Returns each entry's currency and rate. No parameters required.

get_single_forecast_exchange_rate_by_id

Get a single exchange rate in Forecast by id. Returns: currency, rate. Required: id (the currency code, e.g. EUR).

create_a_forecast_exchange_rate

Create a new exchange rate in Forecast. Returns the created exchange rate object with its currency and rate. Required: currency, rate.

update_a_forecast_exchange_rate_by_id

Update an exchange rate in Forecast by id. Returns the updated exchange rate object with its currency and rate. Required: id (the currency code, e.g. EUR), currency, and rate.

delete_a_forecast_exchange_rate_by_id

Delete an exchange rate in Forecast by id. Returns an empty 204 response on success. Required: id (the currency code, e.g. EUR).

list_all_forecast_profiles

List all company profiles in Forecast. Returns each profile's id, name, can_be_edited flag, person_count, and profile_permission list.

list_all_forecast_labels

List all labels in Forecast. Returns each label with id, name, color, categoryId, created_by, updated_by, created_at, and updated_at.

get_single_forecast_label_by_id

Get a single label in Forecast by id. Returns: id, name, color, categoryId, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_label

Create a new label in Forecast. Returns the created label with id, name, color, categoryId, created_at, and updated_at. Required: name.

update_a_forecast_label_by_id

Update a label in Forecast by id. Returns the updated label with id, name, color, categoryId, created_at, and updated_at. Required: id. Set categoryId to null to remove the label from its label_category.

delete_a_forecast_label_by_id

Delete a label in Forecast by id. Returns an empty 204 response on success.

list_all_forecast_label_categories

List all label categories in Forecast. Returns a collection of label category objects including: id, name, allowOnTasks, allowOnProjects, allowOnPeople, created_by, updated_by, created_at, updated_at.

get_single_forecast_label_category_by_id

Get a specific label category in Forecast by id. Returns the label category object including: id, name, allowOnTasks, allowOnProjects, allowOnPeople, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_label_category

Create a new label category in Forecast. Returns the created label category object (same shape as getting a single one), including: id, name, allowOnTasks, allowOnProjects, allowOnPeople, created_by, created_at, updated_at. Requires name, allowOnTasks, allowOnProjects, and allowOnPeople.

update_a_forecast_label_category_by_id

Update a Forecast label category by id. Returns the updated label category with id, name, allowOnTasks, allowOnProjects, allowOnPeople, created_by, updated_by, created_at, and updated_at. All body fields are optional. Required: id.

delete_a_forecast_label_category_by_id

Delete a Forecast label category by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_deleted_data

List deleted time registrations in Forecast. Returns a paginated list of deleted registrations including id, minutesRegistered, person, registeredOn, datetime, deletedBy, and deletedAt.

list_all_forecast_non_project_time

List all non project time entries in Forecast. Returns: id, name, is_internal_time, created_by, updated_by, created_at, updated_at.

get_single_forecast_non_project_time_by_id

Get a single non project time entry in Forecast by id. Returns the entry's id, name, is_internal_time, created_by, and created_at. Required: id.

create_a_forecast_non_project_time

Create a new non project time entry in Forecast. Returns the created entry with id, name, is_internal_time, created_by, and created_at. Required: name. is_internal_time defaults to true.

update_a_forecast_non_project_time_by_id

Update a non project time entry in Forecast by id. Returns the updated entry with id, name, is_internal_time, created_by, and updated_at. Required: id.

delete_a_forecast_non_project_time_by_id

Delete a non project time entry in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_person_cost_periods

List all person cost periods in Forecast, optionally filtered to one or more people by repeating the pid query parameter. Returns: id, person_id, start_year, start_month, start_day, cost, created_by, updated_by, created_at, updated_at, project, person, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, is_soft.

forecast_person_labels_list_for_person

List the labels associated with a person in Forecast. Returns: id, name, project, person, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, is_soft, created_by, updated_by, created_at, updated_at. Required: person_label_id.

list_all_forecast_priority_levels

List all priority levels in Forecast in their configured order. Returns: id, name, weight, created_at, created_by, updated_at, updated_by, use_count, disabled.

create_a_forecast_priority_level

Add one or more priority levels in Forecast; new levels are appended to the end of the existing list (lowest priorities) and can be reordered afterwards. Returns the created priority level including id, name, weight, and disabled. Required: body — an array of objects each with a name.

update_a_forecast_priority_level_by_id

Update the name or disabled status of a single priority level in Forecast. Returns the updated priority level including id, name, weight, updated_at, and disabled. Required: id, plus at least one of name or disabled in the body.

delete_a_forecast_priority_level_by_id

Delete a priority level in Forecast by id; any projects set with this priority are subsequently set to "No priority". Returns an empty 204 response on success.

forecast_priority_levels_delete_with_replacement

Delete a priority level in forecast and reassign the projects using it to a replacement priority level. Returns an empty 204 response on success. Required: priority_level_id, replacement_id.

forecast_priority_levels_bulk_update

Update the ordering, names, and disabled status of all existing priority levels in one call. Returns the updated priority level including id, name, and disabled. Required: body — an array containing every existing priority level with id, name, and disabled; omitting an existing level results in an error.

list_all_forecast_roles

List all roles in Forecast. Returns each role with id, name, created_by, updated_by, created_at, and updated_at.

get_single_forecast_role_by_id

Get a single role in Forecast by id. Returns: id, name, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_role

Create a new role in Forecast. Returns the created role with id, name, created_by, updated_by, created_at, and updated_at. Requires name.

update_a_forecast_role_by_id

Update a role in Forecast by id. Returns the updated role with id, name, created_by, updated_by, created_at, and updated_at. Required: id.

delete_a_forecast_role_by_id

Delete a role in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_skill_categories

List all skill categories in Forecast. Returns: id, name, created_by, updated_by, created_at, updated_at.

get_single_forecast_skill_category_by_id

Get a specific skill category in Forecast by id. Returns: id, name, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_skill_category

Create a new skill category in Forecast. Returns the created skill category with id, name, created_by, updated_by, created_at, and updated_at. Requires name.

update_a_forecast_skill_category_by_id

Update a skill category in Forecast by id. Returns the updated skill category: id, name, created_by, updated_by, created_at, and updated_at. Required: id. The body can set name and assignedSkills (list of skill IDs).

delete_a_forecast_skill_category_by_id

Delete a skill category in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_skill_levels

List all skill levels configured in the Forecast Admin UI. Returns: id, level, description, created_by, updated_by, created_at, updated_at, name, role_id, project_id, department_id, team_ids, skills.

list_all_forecast_skill_persons

List skills associated with all persons in Forecast. Returns each person-skill record with personId, skillId, and skillLevelId.

get_single_forecast_skill_person_by_id

Get a specific skill associated with a person in Forecast by person and skill id. Returns: personId, skillId, skillLevelId. Required: person_id and id (the skill id).

create_a_forecast_skill_person

Create a person skill in Forecast, associating a skill with a person at a given skill level. Returns the created person skill with personId, skillId, and skillLevelId. Required: personId and skillId.

delete_a_forecast_skill_person_by_id

Delete a skill associated with a person in Forecast. Returns an empty 204 response on success. Required: person_id and id (the skill id).

list_all_forecast_skills

List all skills in forecast. Returns: id, name, categoryId, created_by, updated_by, created_at, updated_at.

get_single_forecast_skill_by_id

Get a single skill in forecast by id. Returns: id, name, categoryId, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_skill

Create a new skill in forecast. Returns the created skill object with id, name, categoryId, created_by, and created_at. Required: name.

update_a_forecast_skill_by_id

Update a skill in forecast by id. Returns the updated skill object with id, name, categoryId, created_by, and updated_at. Required: id.

delete_a_forecast_skill_by_id

Delete a skill in forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_teams

List all teams in Forecast. Returns: id, name, persons, created_by, updated_by, created_at, updated_at.

get_single_forecast_team_by_id

Get a single team in Forecast by id. Returns: id, name, persons, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_team

Create a new team in Forecast. Returns the created team object with id, name, persons, created_by, created_at, and updated_at. Required: name.

update_a_forecast_team_by_id

Update a team in Forecast by id. Returns the updated team object with id, name, persons, created_by, created_at, and updated_at. Required: id.

delete_a_forecast_team_by_id

Delete a team in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_tickets

Get a specific Forecast ticket by its ticket number. Returns: id, slug, url, subject, description, status, priority, channel, created_at, requester, assignee_id, labels. Required: ticket_number.

create_a_forecast_ticket

Create a new Forecast ticket. Returns the created ticket with its id, slug, subject, status, priority, channel, created_at, requester, and assignee_id. Requires subject and requester_email. New tickets are created with status open and channel api.

get_single_forecast_ticket_by_id

Get a single Forecast ticket by its ticket number. Returns: id, slug, url, subject, description, status, priority, channel, created_at, requester, assignee_id, labels. Required: ticket_number.

forecast_tickets_get_by_ticket_number

Get a specific ticket in Forecast by its ticket number — the number shown for the ticket in the app. Returns the ticket object including id, slug, subject, description, status, priority, channel, created_at, requester, assignee_id, and labels. Required: ticket_number.

forecast_tickets_bulk_update

Update a Forecast ticket by its ticket number. Returns the updated ticket with its id, slug, subject, status, priority, requester, and assignee_id. Required: ticket_number. At least one body field must be supplied.

forecast_tickets_bulk_delete

Delete a Forecast ticket by its ticket number. Returns an empty 204 response on success. Required: ticket_number.

get_single_forecast_to_do_by_id

Get a specific to do (subtask) in Forecast by id. Returns the to do object including its id, task, name, done, created_by, and created_at. Required: id.

create_a_forecast_to_do

Create a new to do in Forecast attached to a parent task. Returns the created to do object including its id, task, name, done, created_by, and created_at. Required: task.

update_a_forecast_to_do_by_id

Update a to do in Forecast by id, for example to rename it or mark it done. Returns the updated to do object including its id, task, name, done, created_by, and created_at. Required: id.

delete_a_forecast_to_do_by_id

Delete a to do in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_allocations

List all allocations in Forecast. Returns: id, project, non_project_time, connected_project, person, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, is_soft, created_by, updated_by, created_at, updated_at.

get_single_forecast_allocation_by_id

Get a single allocation in Forecast by id. Returns: id, project, non_project_time, connected_project, person, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, is_soft, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_allocation

Create a new allocation in Forecast. Returns the created allocation object including id, project, person, start_date, end_date, and per-day allocation minutes. Required: person, start_date, end_date. Either a project, connected_project or non_project_time must be supplied.

update_a_forecast_allocation_by_id

Update an existing allocation in Forecast by id. Returns the updated allocation object including id, project, person, start_date, end_date, and per-day allocation minutes. Required: id.

delete_a_forecast_allocation_by_id

Delete an allocation in Forecast by id. Returns an empty 204 response on success. Required: id.

get_single_forecast_baseline_expense_by_id

Get a single baseline expense in a Forecast project phase by id. Returns the baseline expense including id, expense_category, expense_cost, expense_revenue, and created_at. Required: project_id, phase_id, id.

create_a_forecast_baseline_expense

Create a new baseline expense in a Forecast project phase. Returns the created expense including id, expense_category, expense_cost, expense_revenue, and created_at. Required: expense_category, expense_cost, expense_revenue, project_id, phase_id.

update_a_forecast_baseline_expense_by_id

Update a baseline expense in a Forecast project phase by id. Only expense_cost and expense_revenue can be modified. Returns the updated expense including id, expense_cost, expense_revenue, and updated_at. Required: project_id, phase_id, id.

delete_a_forecast_baseline_expense_by_id

Delete a baseline expense from a Forecast project phase by id. Returns an empty 204 response on success. Required: project_id, phase_id, id.

get_single_forecast_baseline_role_by_id

Get a specific baseline role for a phase in a Forecast project by id. Returns: id, project, phase, role, baseline_minutes, created_by, updated_by, created_at, updated_at. Required: project_id, phase_id, id.

create_a_forecast_baseline_role

Create a new baseline role for a phase in a Forecast project. Returns the created baseline role with id, project, phase, role, baseline_minutes, created_by, updated_by, created_at, and updated_at. Required: project_id, phase_id, role, baseline_minutes.

update_a_forecast_baseline_role_by_id

Update a baseline role for a phase in a Forecast project, e.g. to change its baseline_minutes. Returns the updated baseline role with id, project, phase, role, baseline_minutes, created_by, updated_by, created_at, and updated_at. Required: project_id, phase_id, id.

delete_a_forecast_baseline_role_by_id

Delete a baseline role from a phase in a Forecast project by id. Required: project_id, phase_id, id. Returns an empty 204 response on success.

list_all_forecast_bill_froms

List all bill froms in Forecast. Returns: id, name, integration, external_id, created_by, updated_by, created_at, updated_at. Optionally filter by one or more ids or by integration.

list_all_forecast_bill_tos

List all bill tos in Forecast, optionally filtered to specific records via repeatable id or bill_from_id query filters. Returns: id, name, address, tax_id, external_id, bill_from_id, created_by, updated_by, created_at, updated_at.

list_all_forecast_client_bill_tos

List all client bill tos in Forecast. Returns: id, client_id, bill_from_id, bill_to_id, created_by, updated_by, created_at, updated_at.

create_a_forecast_client_bill_to

Create a new client bill to entry in Forecast for a client. Returns the created entry with id, client_id, bill_from_id, bill_to_id, created_by, and created_at. Required: client_id, bill_from_id, bill_to_id.

delete_a_forecast_client_bill_to_by_id

Delete a client bill to in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_connected_projects

List all connected projects in Forecast. Returns: id, company_connected_project_id, name, color, estimation_units, use_sprints, sprint_length, minutes_per_estimation_point, created_by, updated_by, created_at, updated_at.

get_single_forecast_connected_project_by_id

Get a single connected project in Forecast by id. Returns: id, company_connected_project_id, name, color, estimation_units, use_sprints, sprint_length, minutes_per_estimation_point, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_connected_project

Create a connected project in Forecast linking one or more existing projects. Returns the created record including id, name, color, estimation_units, use_sprints, and created_at. Required: projects (non-empty array of project IDs). estimation_units, use_sprints, sprint_length, and minutes_per_estimation_point default to values inherited from the linked projects.

update_a_forecast_connected_project_by_id

Update a connected project in Forecast by id. Returns the updated record including id, name, color, estimation_units, use_sprints, sprint_length, minutes_per_estimation_point, and created_at. Required: id.

delete_a_forecast_connected_project_by_id

Delete a connected project in Forecast by id. Projects inside the connected project are not deleted. Returns an empty 204 response on success. Required: id.

list_all_forecast_holiday_calendars

List all holiday calendars in Forecast. Returns: id, name, created_by, updated_by, created_at, updated_at.

get_single_forecast_holiday_calendar_by_id

Get a single Forecast holiday calendar by id. Returns: id, name, created_by, updated_by, created_at, updated_at. Required: id.

forecast_holiday_calendars_list_entries

List the holiday entries of a Forecast holiday calendar. Returns: id, holiday_calendar_id, year, month, day, name, created_by, updated_by, created_at, updated_at. Required: holiday_calendar_id.

create_a_forecast_holiday_calendar

Create a new holiday calendar in Forecast. Returns the created calendar with id, name, created_by, updated_by, created_at, and updated_at. Required: name.

update_a_forecast_holiday_calendar_by_id

Update a Forecast holiday calendar by id, e.g. to rename it. Returns the updated calendar with id, name, created_by, updated_by, created_at, and updated_at. Required: id.

delete_a_forecast_holiday_calendar_by_id

Delete a holiday calendar in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_holiday_calendar_entries

List all holiday calendar entries in Forecast. Returns entries with id, holiday_calendar_id, year, month, day, name, created_by, updated_by, created_at, and updated_at.

create_a_forecast_holiday_calendar_entry

Create a new holiday calendar entry in Forecast. Returns the created entry with id, holiday_calendar_id, year, month, day, name, created_by, updated_by, created_at, and updated_at. Requires holiday_calendar_id, year, month, day, and name.

update_a_forecast_holiday_calendar_entry_by_id

Update an existing holiday calendar entry in Forecast by id; year, month, day, and name are optional fields. Returns the updated entry with id, holiday_calendar_id, year, month, day, name, created_by, updated_by, created_at, and updated_at. Required: id.

delete_a_forecast_holiday_calendar_entry_by_id

Delete a holiday calendar entry from Forecast by id. Required: id. Returns an empty 204 response on success.

list_all_forecast_expense_categories

List all expense categories in Forecast. Returns: id, name, disabled, created_by, updated_by, created_at, updated_at.

get_single_forecast_expense_category_by_id

Get a single expense category in Forecast by id. Returns: id, name, disabled, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_expense_category

Create a new expense category in Forecast. Returns the created category: id, name, disabled, created_by, created_at, updated_at. Required: name.

update_a_forecast_expense_category_by_id

Update an expense category in Forecast by id. Returns the updated category: id, name, disabled, created_by, created_at, updated_at. Required: id.

delete_a_forecast_expense_category_by_id

Delete an expense category in Forecast by id. Returns an empty 204 response on success. Required: id.

get_single_forecast_sub_task_by_id

Get a single sub task in Forecast by id. Returns the sub task object with id, task, name, description, estimate, done, created_by, and created_at. Required: id. Deprecated: legacy subtask endpoints — see the tasks resource for new subtasks.

create_a_forecast_sub_task

Create a sub task in Forecast under a parent task. Returns the created sub task object with id, task, name, estimate, done, and created_at. Required: task. Deprecated: legacy subtask endpoints — see the tasks resource for new subtasks.

update_a_forecast_sub_task_by_id

Update a sub task in Forecast by id. Returns the updated sub task object with id, task, name, estimate, done, and updated_at. Required: id. Deprecated: legacy subtask endpoints — see the tasks resource for new subtasks.

delete_a_forecast_sub_task_by_id

Delete a sub task in Forecast by id. Returns an empty 204 response on success. Required: id. Deprecated: legacy subtask endpoints — see the tasks resource for new subtasks.

get_single_forecast_phase_by_id

Get a specific phase in Forecast by id. Returns the phase object including id, name, start_date, end_date, baseline_start_date, baseline_end_date, created_by, updated_by, created_at, and updated_at. Required: id.

list_all_forecast_project_bill_tos

List the bill-to assignments linking Forecast projects to bill-from and client bill-to entities. Returns: id, bill_from_id, bill_to_id, project_id, client_bill_to_id, client_id, created_by, updated_by, created_at, updated_at.

create_a_forecast_project_bill_to

Create a Forecast project bill-to, assigning a bill-from and client bill-to to a project for invoicing. Returns the created record with id, bill_from_id, bill_to_id, project_id, client_bill_to_id and client_id. Required: project_id.

delete_a_forecast_project_bill_to_by_id

Delete a Forecast project bill-to by id. Returns an empty response on success. Required: id.

list_all_forecast_rate_cards

List the current version of every rate card in Forecast. Returns: id, name, default_rate, created_by, updated_by, created_at, updated_at. Use rate_card_rates and rate_card_versions for per-role rates and history.

get_single_forecast_rate_card_by_id

Get the current version of a single Forecast rate card by id. Returns: id, name, default_rate, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_rate_card

Create a Forecast rate card. Returns the created rate card with id, name and default_rate. Required: name.

update_a_forecast_rate_card_by_id

Update a Forecast rate card's name or default rate by id. Returns the updated rate card. Required: id.

delete_a_forecast_rate_card_by_id

Delete a Forecast rate card by id. Returns an empty response on success. Required: id.

forecast_rate_card_rates_list_for_rate_card

List all rates for the current version of a Forecast rate card. Returns: role, rate, created_by, updated_by, created_at, updated_at. Required: rate_card_id. All roles might not be present; roles without an explicit rate fall back to the rate card's default rate.

forecast_rate_card_rates_get_for_rate_card

Get the current version of a rate card rate for a specific role in Forecast. Returns: role, rate, created_by, updated_by, created_at, updated_at. Required: rate_card_id, role_id. Returns a 404 error if the role does not have a rate.

forecast_rate_card_rates_delete_for_rate_card

Delete a rate card rate for a specific role on a Forecast rate card. Returns an empty 204 response on success. Required: rate_card_id, role_id.

forecast_rate_card_rates_bulk_update

Update the rate for a specific role on a Forecast rate card. Returns the updated rate object including role, rate, created_by, updated_by, created_at, and updated_at. Required: rate_card_id, role_id, rate.

forecast_rate_card_versions_list_for_rate_card

List all versions of a Forecast rate card. Returns each version's start_date, end_date, default_rate, and rates (per-role rates with created_at/updated_at). Required: rate_card_id.

forecast_rate_card_versions_get_for_date

Get the version of a Forecast rate card that is active on a specific date. Returns: currency, rate. Required: rate_card_id and date (ISO 8601 date, e.g. 2021-09-15).

get_single_forecast_repeating_card_by_id

Get a repeating card in Forecast by its id. Returns the repeating card with id, weekday repeat flags (monday-sunday), monthly_day, repeat_type, created_by, updated_by, and created_at/updated_at. Required: id. Deprecated: use the Repeating Tasks endpoints instead.

create_a_forecast_repeating_card

Create a repeating card in Forecast for a card. Returns the created repeating card with id, weekday repeat flags (monday-sunday), monthly_day, repeat_type, created_by, and updated_by. Required: task_id. repeat_type accepts WEEKLY or MONTHLY. Deprecated: use the Repeating Tasks endpoints instead.

update_a_forecast_repeating_card_by_id

Update a repeating card in Forecast by its id. Returns the updated repeating card with id, weekday repeat flags (monday-sunday), monthly_day, repeat_type, created_by, and updated_by. Required: id. Deprecated: use the Repeating Tasks endpoints instead.

delete_a_forecast_repeating_card_by_id

Delete a repeating card in Forecast by its id. Returns an empty 204 response on success. Required: id. Deprecated: use the Repeating Tasks endpoints instead.

get_single_forecast_repeating_task_by_id

Get a repeating task in Forecast by id. Returns: id, monday, tuesday, wednesday, thursday, friday, saturday, sunday, monthly_day, repeat_type, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_repeating_task

Create a repeating task in Forecast for a task. Returns the created repeating task: id, repeat_type, monday-sunday day flags, monthly_day, created_by, updated_by. Required: task_id.

update_a_forecast_repeating_task_by_id

Update a repeating task in Forecast by id. Returns the updated repeating task: id, repeat_type, monday-sunday day flags, monthly_day, created_by, updated_by. Required: id.

delete_a_forecast_repeating_task_by_id

Delete a repeating task in Forecast by id. Returns an empty 204 response on success. Required: id.

forecast_financials_get_financial_numbers

Get aggregated financial numbers for a date range in Forecast. Returns revenueRecognition, baseline, planned, actual, forecastToComplete, totalAtCompletion, timeInMinutes, invoices, and retainerPeriodTarget breakdowns, plus yearGrouping/yearMonthGrouping when grouping by period. Required: startDate and endDate (both together or both omitted); pass groupBy to segment by PROJECT, YEAR, MONTH, and…

list_all_forecast_placeholder_allocations

List all placeholder allocations in Forecast. Returns: id, placeholder_id, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, created_by, updated_by, created_at, updated_at.

get_single_forecast_placeholder_allocation_by_id

Get a single placeholder allocation in Forecast by id. Returns: id, placeholder_id, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_placeholder_allocation

Create a placeholder allocation in Forecast for a placeholder, with per-weekday minutes and a date range. Returns the created allocation object including id, placeholder_id, start_date, end_date, monday, and notes. Required: placeholder_id.

update_a_forecast_placeholder_allocation_by_id

Update an existing placeholder allocation in forecast by id. Returns the updated allocation with id, placeholder_id, start_date, end_date, per-weekday allocations in minutes, notes, and audit fields. Required: id.

delete_a_forecast_placeholder_allocation_by_id

Delete a placeholder allocation in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_placeholders

List all placeholders in Forecast. Returns: id, name, role_id, project_id, department_id, created_by, updated_by, created_at, updated_at, team_ids, skills.

get_single_forecast_placeholder_by_id

Get a single placeholder in Forecast by id. Returns the full placeholder including id, name, role_id, project_id, department_id, team_ids, and skills. Required: id.

create_a_forecast_placeholder

Create a new placeholder in Forecast. Returns the created placeholder including id, name, role_id, project_id, team_ids, and skills.

update_a_forecast_placeholder_by_id

Update a placeholder in Forecast by id. Returns the updated placeholder including id, name, role_id, project_id, department_id, and team_ids. Required: id.

delete_a_forecast_placeholder_by_id

Delete a placeholder and all its allocations in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_webhook_subscriptions

List all Forecast webhook subscriptions for task, time registration, project, and phase events. Returns: id, name, type, event, url, active.

get_single_forecast_webhook_subscription_by_id

Get a single Forecast webhook subscription by id. Returns: id, name, type, event, url, active. Required: id.

create_a_forecast_webhook_subscription

Create a Forecast webhook subscription that delivers task, time registration, project, or phase event webhooks to a url of your choice. Returns: id, name, type, event, url, active. Required: name, type, event, url.

update_a_forecast_webhook_subscription_by_id

Update a Forecast webhook subscription by id, e.g. to change its name, url, or active flag. Returns: id, name, type, event, url, active. Required: id.

delete_a_forecast_webhook_subscription_by_id

Delete a Forecast webhook subscription by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_cards

List all cards in your Forecast account. Returns: id, company_card_id, title, description, project_id, role, low_estimate, high_estimate, forecast, remaining, approved, start_date, end_date, bug, un_billable, blocked, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, created_by, updated_by, created_at, updated_at. Note: this endpoint is deprecated; use Tasks instead, and the…

get_single_forecast_card_by_id

Get a specific card in Forecast by id. Returns: id, company_card_id, title, description, project_id, role, low_estimate, high_estimate, forecast, remaining, approved, start_date, end_date, bug, un_billable, blocked, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, created_by, updated_by, created_at, updated_at. Required: id. Note: this endpoint is deprecated; use Tasks…

create_a_forecast_card

Create a new card in Forecast. Returns the created card object: id, title, project_id, low_estimate, high_estimate, forecast, approved, sprint, owner_id, created_at, updated_at. Required: project_id. Note: this endpoint is deprecated; use Tasks instead.

update_a_forecast_card_by_id

Update an existing card in Forecast by id. Returns the updated card object: id, title, project_id, low_estimate, high_estimate, forecast, approved, sprint, owner_id, created_at, updated_at. Required: id. Note: remaining is only settable when the card's project has remaining_auto_calculated set to false; this endpoint is deprecated, use Tasks instead.

delete_a_forecast_card_by_id

Delete a card in Forecast by id. Returns an empty 204 response on success. Required: id. Note: this endpoint is deprecated; use Tasks instead.

list_all_forecast_expense_items

List all expense items of the company in Forecast. Returns: id, project_id, name, expense_date, cost, price, quantity, approved, billable, notes, person_id, expense_category, created_by, updated_by, created_at, updated_at, phase_id, part_of_fixed_price.

get_single_forecast_expense_item_by_id

Get a single expense item in Forecast by id. Returns the full expense item including id, project_id, name, expense_date, cost, price, billable, and more. Required: id.

list_all_forecast_time_registrations

List all time registrations in Forecast via the v4 endpoint. Returns each registration's id, person, project, task, phase, time_registered, and approval_status. Paginated.

get_single_forecast_time_registration_by_id

Get a single time registration in Forecast by id. Returns: id, person, project, role, card, task, non_project_time, time_registered, billable_minutes_registered, date, notes, approval_status, created_by, updated_by, created_at, updated_at. Required: id.

create_a_forecast_time_registration

Create a time registration in Forecast. Returns the created registration including id, person, task, time_registered, approval_status, and date. Requires person, time_registered, and date, plus one of project, task, or non_project_time.

update_a_forecast_time_registration_by_id

Update a time registration in Forecast by id. Returns the updated registration including id, person, task, time_registered, approval_status, and updated_at. Required: id.

delete_a_forecast_time_registration_by_id

Delete a time registration in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_persons

List all persons in Forecast. Returns each person's id, first_name, last_name, email, job_title, working hours, and more.

get_single_forecast_person_by_id

Get a single person in Forecast by id. Returns the person including first_name, last_name, email, job_title, working hours, permissions, and more. Required: id.

create_a_forecast_person

Create a person in Forecast. Returns the created person with id, first_name, last_name, email, job_title, working hours, and more. Requires profile_ids.

update_a_forecast_person_by_id

Update a person in Forecast by id. Returns the updated person with id, first_name, last_name, email, working hours, permissions, and more. Required: id.

delete_a_forecast_person_by_id

Delete a person in Forecast by id. Only persons with client_id set can be deleted. Returns an empty 204 response on success. Required: id.

list_all_forecast_tasks

List all tasks in your Forecast account. Returns paginated task records including id, title, description, project_id, estimate, approved, start_date, end_date, assigned_persons, labels, and owner_id.

get_single_forecast_task_by_id

Get a single Forecast task by id. Returns the task object including id, title, description, project_id, estimate, remaining, approved, sprint, workflow_column, milestone, assigned_persons, labels, and owner_id. Required: id.

create_a_forecast_task

Create a new task in Forecast. Returns the created task object including id, title, description, project_id, estimate, approved, assigned_persons, and created_at.

update_a_forecast_task_by_id

Update an existing Forecast task by id. Returns the updated task object including id, title, description, project_id, estimate, approved, and updated_at. Required: id.

delete_a_forecast_task_by_id

Delete a Forecast task by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_projects

List all projects in Forecast. Returns: id, name, stage, status, budget, client, start_date, created_at. Pass includeProgress=true to also return each project's progress value (cached for 10 minutes).

get_single_forecast_project_by_id

Get a single project in Forecast by id. Returns: id, company_project_id, custom_project_id, connected_project, name, stage, status, status_description, description, priority_level_id, color, estimation_units, minutes_per_estimation_point, budget, billable, budget_type, use_sprints, sprint_length, start_date, end_date, card_levels, task_levels, client, rate_card, remaining_auto_calculated,…

forecast_projects_get_by_company_project_id

Get a single project in Forecast by its company project id. Returns: id, company_project_id, custom_project_id, connected_project, name, stage, status, status_description, description, priority_level_id, color, estimation_units, minutes_per_estimation_point, budget, billable, budget_type, use_sprints, sprint_length, start_date, end_date, card_levels, task_levels, client, rate_card,…

forecast_projects_get_by_custom_project_id

Get a single project in Forecast by its custom project id. Returns: id, company_project_id, custom_project_id, connected_project, name, stage, status, status_description, description, priority_level_id, color, estimation_units, minutes_per_estimation_point, budget, billable, budget_type, use_sprints, sprint_length, start_date, end_date, card_levels, task_levels, client, rate_card,…

create_a_forecast_project

Create a new project in Forecast. Returns the created project with the same fields as a single-project get: id, name, stage, status, budget, client, created_at. Set name, stage, status, estimation_units, budget_type, budget, and sprint/baseline options in the request body.

update_a_forecast_project_by_id

Update a Forecast project by id, setting any of its fields (name, stage, status, budget, labels, start_date, and more). Returns the updated project: id, name, stage, status, budget, start_date, end_date, updated_at. Required: id.

delete_a_forecast_project_by_id

Delete a Forecast project by id. Returns an empty 204 response on success. Required: id.

forecast_retainer_periods_list_by_ids

List Forecast retainer periods for a comma-separated set of IDs. Returns: id, name, project_id, created_at, created_by, updated_at, updated_by, start_day, start_month, start_year, end_day, end_month, end_year, invoice_id, retainer_budget_type, period_length, period_locked, retainer_billing_period, period_target_minutes, period_rollover_minutes, period_target_price, period_rollover_price,…

forecast_retainer_periods_list_updated_after

List Forecast retainer periods that were updated after a given timestamp, paginated. Returns: id, name, project_id, created_at, created_by, updated_at, updated_by, start_day, start_month, start_year, end_day, end_month, end_year, invoice_id, retainer_budget_type, period_length, period_locked, retainer_billing_period, period_target_minutes, period_rollover_minutes, period_target_price,…

list_all_forecast_invoices

List all Forecast invoices across projects. Returns each invoice with id, company_invoice_id, project_id, name, currency, client_id, invoice_reference, invoice_type (DEPOSIT, FIXED_PRICE, TIME_AND_MATERIAL, MANUAL), created_date, due_date, notes, status (DRAFT, APPROVED, SENT), payment_status, entries (line items with quantity, unit_price, discount, tax) and payments.

create_a_forecast_invoice

Create a Forecast invoice with optional line-item entries. Status defaults to DRAFT and invoice_reference to INV-{id}. Returns the created invoice with its entries.

get_single_forecast_invoice_by_id

Get a single Forecast invoice by id, including its entries and payments. Returns: id, company_invoice_id, project_id, name, currency, client_id, invoice_reference, invoice_type, created_date, due_date, notes, status, payment_status, entries, payments. Required: id.

update_a_forecast_invoice_by_id

Update a Forecast invoice by id (name, currency, client_id, invoice_reference, dates, notes, status). Returns the updated invoice. Required: id.

delete_a_forecast_invoice_by_id

Delete a Forecast invoice by id. Returns an empty response on success. Required: id.

update_a_forecast_invoice_entry_by_id

Update a specific invoice entry in forecast. Returns the updated entry including id, invoice_id, name, quantity, unit_price, discount, tax, and description. Required: id.

delete_a_forecast_invoice_entry_by_id

Delete a specific invoice entry in forecast. Returns an empty 204 response on success. Required: id.

update_a_forecast_invoice_payment_by_id

Update a specific invoice payment in Forecast by id. Returns the updated invoice payment including id, invoice_id, notes, amount, date, and created_by. Required: id.

delete_a_forecast_invoice_payment_by_id

Delete a specific invoice payment in Forecast by id. Returns an empty 204 response on success. Required: id.

list_all_forecast_person_notification_settings

Get notification settings for a single person in Forecast across the email, in-app, Slack, and MS Teams destinations. Returns: person_id, project_deadline_notification_period, task_deadline_notification_period, invoice_notification_days_overdue, task_email_notification_frequency, notify_on_project_stage_change_only_assigned_projects, notify_on_project_deadline_only_assigned_projects,…

forecast_person_notification_settings_bulk_update

Update a person's notification settings in Forecast across the email, in-app, Slack, and MS Teams destinations. Returns the same object as get: person_id, task_email_notification_frequency, and the email_notification_settings, in_app_notification_settings, slack_notification_settings, and ms_teams_notification_settings objects. Required: person_id.

list_all_forecast_programs

List all Forecast programs (beta). Returns: id (UUID), key, name, description, stage (OPPORTUNITY, PLANNING, RUNNING, HALTED, DONE), color, start_date, end_date, projects (project ids), client (client id).

get_single_forecast_program_by_id

Get a single Forecast program by UUID. Returns: id, key, name, description, stage, color, start_date, end_date, projects, client. Required: id.

create_a_forecast_program

Create a Forecast program. Returns the created program with id, key, name, stage, projects and client. Required: name, key (max 5 alphanumeric characters).

update_a_forecast_program_by_id

Update a Forecast program's name, key, description, color or dates by UUID. Returns the updated program. Required: id.

delete_a_forecast_program_by_id

Delete a Forecast program by UUID. Returns an empty response on success. Required: id.

forecast_programs_add_projects

Add existing projects to a Forecast program. Returns the updated program. Required: program_id, project_ids.

forecast_programs_remove_projects

Remove projects from a Forecast program. Returns the updated program. Required: program_id, project_ids.

forecast_programs_get_financials

Get the financial settings of a Forecast program. Returns budget_type (UNCAPPED, CAPPED, FIXED_PRICE) and budget_value (revenue cap or fixed price). Required: program_id.

forecast_programs_list_stages

List the possible program stages in Forecast. Returns each stage's id (UUID) and name; pass a stage id to programs.update_stage or as stage_id when creating a program.

forecast_programs_update_stage

Move a Forecast program to a different stage. Returns the updated program. Required: program_id, stage_id (from programs.list_stages).

forecast_programs_update_client

Set the client of a Forecast program. Returns the updated program. Required: program_id, client_id.

forecast_programs_remove_client

Remove the client from a Forecast program. Returns the updated program. Required: program_id.

forecast_programs_list_team

List the team members of a Forecast program. Returns each membership's id (UUID), person_id and program_role (USER or OWNER). Required: program_id.

forecast_programs_add_team_member

Add people to a Forecast program's team with a role. Returns the created memberships. Required: program_id, person_ids, program_role.

forecast_programs_update_team_member

Change a Forecast program team member's role. Returns the updated membership. Required: team_id (membership UUID), program_role.

forecast_programs_remove_team_member

Remove a team member from a Forecast program. Returns an empty response on success. Required: team_id (membership UUID).

forecast_programs_bulk_update

Update the financial settings of a Forecast program: budget_type (UNCAPPED, CAPPED, FIXED_PRICE) and budget_value. Returns the updated financial settings. Required: program_id.

list_all_forecast_legacy_tasks

List all tasks in your Forecast account via the legacy v3 tasks endpoint. Returns each task with id, title, description, project_id, estimate, remaining, approved, start_date, end_date, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, and created_at/updated_at. The response may be a large dataset.

list_all_forecast_project_tasks

List all tasks of a forecast project. Returns each task's id, title, description, low_estimate/high_estimate/forecast, start_date and end_date, assigned_persons, owner_id, and workflow_column. Required: project_id.

list_all_forecast_project_updated_tasks

List forecast project tasks updated after a given timestamp. Returns task objects with id, title, project_id, estimates, start/end dates, sprint, workflow_column, assigned_persons, and timestamps. Required: project_id, updated_after (format YYYYMMDDTHHmmss, e.g. 20180216T210047).

list_all_forecast_task_children

List the child tasks that belong to a specific Forecast task. Returns an array of task objects including id, title, description, project_id, parent_task_id, estimate, start_date, end_date, assigned_persons, labels, and owner_id. Required: task_id.

create_a_forecast_task_comment

Create a new comment on a Forecast task. Returns the created comment including its id, comment text, task_id, person_id, and created_at. Required: task_id, comment, person_id.

list_all_forecast_task_comments

List all comments on a Forecast task. Returns: id, card_id, task_id, comment, created_at, person_id, company_card_id, company_task_id, title, role, project_id, parent_task_id, low_estimate, high_estimate, forecast, remaining, approved, start_date, end_date, bug, high_priority, un_billable, blocked, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, created_by, updated_by,…

create_a_forecast_task_file

Upload a file to a Forecast task as multipart/form-data. Returns the created file record. Required: task_id, file.

get_single_forecast_tasks_by_company_id_by_id

Get a single Forecast task by its company task id. Returns the task including id, company_task_id, title, project_id, estimates (low_estimate, high_estimate, forecast, remaining), and start/end dates. Required: id.

list_all_forecast_updated_tasks

List Forecast tasks that have been updated after a given timestamp. Returns each task record including id, title, description, project_id, estimates, start/end dates, assignments, and created_at/updated_at. Required: updated_after (format YYYYMMDDTHHmmss, e.g. 20180216T210047).

list_all_forecast_deleted_tasks

List all deleted tasks in the Forecast company, paginated. Returns for each: task (id, name, deleted_at, deleted_by), project, phase, sprint, assignedPersons, labels and comments.

list_all_forecast_legacy_time_registrations

List all time registrations in Forecast via the legacy v3 endpoint (deprecated — use the v4 time_registrations endpoints). Returns: id, person, project, role, card, task, task_project, non_project_time, time_registered, billable_minutes_registered, date, notes, approval_status, invoice_entry, invoice, created_by, updated_by, created_at, updated_at. Optional filters: updated_after, date_after.

list_all_forecast_project_time_registrations

List all time registrations in a Forecast project. Optionally filter with updated_after (YYYYMMDDTHHmmss) or date_after (YYYYMMDD). Returns: id, person, project, role, task, non_project_time, time_registered (minutes), billable_minutes_registered, date, notes, approval_status, invoice_entry, invoice, created_by, updated_by, created_at, updated_at. Required: project_id.

list_all_forecast_person_time_registrations

List all time registrations for a given person in Forecast. Returns: id, person, project, role, card, task, task_project, non_project_time, time_registered, billable_minutes_registered, date, notes, approval_status, invoice_entry, invoice, created_by, updated_by, created_at, updated_at. Required: person_id. This v3 endpoint is deprecated in favor of the v4 time_registrations endpoints.

list_all_forecast_updated_time_registrations

List Forecast time registrations that were updated after a given timestamp. Returns each registration's id, person, project, task, time_registered, billable_minutes_registered, date, notes, approval_status, and created_at/updated_at. Required: updated_after (format YYYYMMDDTHHmmss). Results are paginated.

list_all_forecast_dated_time_registrations

List Forecast time registrations with a date value after the specified date. Returns: id, deleted_by, deleted_at, person, project, role, card, task, task_project, non_project_time, time_registered, billable_minutes_registered, date, notes, approval_status, invoice, created_by, updated_by, created_at, updated_at. Required: date_after (format YYYYMMDD).

list_all_forecast_task_to_dos

List all to do's for a Forecast task. Returns: id, task, name, done, created_by, updated_by, created_at, updated_at. Required: task_id.

list_all_forecast_project_to_dos

List all to do's for a Forecast project. Returns: id, task, name, done, created_by, updated_by, created_at, updated_at. Required: project_id.

list_all_forecast_task_sub_tasks

List all sub tasks for a Forecast task. Returns: id, card, task, name, description, estimate, done, created_by, updated_by, created_at, updated_at. Required: task_id. Deprecated upstream in favor of to_do's.

list_all_forecast_project_sub_tasks

List all sub tasks for a Forecast project. Returns each sub task's id, task, name, description, estimate, and done flag along with created_at/updated_at timestamps. Required: project_id. Deprecated by Forecast in favor of to_do's.

list_all_forecast_person_profiles

List all person profiles in Forecast for a given person. Returns: id, name, can_be_edited, person_count, profile_permission, project, person, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, is_soft, created_by, updated_by, created_at, updated_at. Required: person_id.

list_all_forecast_project_baseline_expenses

List all baseline expenses in a Forecast project. Returns: id, project, phase, expense_category, expense_cost, and expense_revenue for each baseline expense, plus created_at, updated_at, created_by, and updated_by. Required: project_id.

list_all_forecast_phase_baseline_expenses

List all baseline expenses for a given phase in Forecast. Returns: id, expense_category, expense_cost, expense_revenue, created_at, updated_at. Required: project_id, phase_id.

list_all_forecast_project_baseline_roles

List all baseline roles for a Forecast project. Returns: id, project, phase, role, baseline_minutes, created_by, updated_by, created_at, updated_at. Required: project_id.

list_all_forecast_phase_baseline_roles

List all baseline roles for a given phase in Forecast. Returns: id, project, phase, role, baseline_minutes, created_by, updated_by, created_at, updated_at. Required: project_id, phase_id.

create_a_forecast_project_phase

Create a new phase in a Forecast project. Returns the created phase object (same shape as getting a single phase) including id, name, start_date, end_date, baseline_start_date, and baseline_end_date. Required: project_id, name.

delete_a_forecast_project_phase_by_id

Delete a phase in a Forecast project by id. Deleting a phase does not delete the tasks in it. Returns an empty 204 response on success. Required: project_id, id.

get_single_forecast_project_phase_by_id

Get a specific phase in a Forecast project by id. Returns the phase object including id, name, project_id, start_date, end_date, baseline_start_date, baseline_end_date, created_by, and updated_at. Required: project_id, id.

list_all_forecast_project_phases

List all phases of a Forecast project. Returns phase objects including id, name, project_id, start_date, end_date, baseline_start_date, baseline_end_date, created_by, updated_by, created_at, and updated_at. Required: project_id.

update_a_forecast_project_phase_by_id

Update a phase in a Forecast project by id. Returns the updated phase object (same shape as getting a single phase) including id, name, start_date, end_date, baseline_start_date, and baseline_end_date. Required: project_id, id.

create_a_forecast_project_workflow_column

Create a new workflow column in a Forecast project. Returns the created workflow column including id, name, category, sort_order, and created_at. Required: project_id, name. category defaults to TODO and sort_order defaults to the last column.

delete_a_forecast_project_workflow_column_by_id

Delete a workflow column from a Forecast project by id. Tasks in the workflow column are not deleted. Required: id, project_id. Returns an empty 204 response on success.

get_single_forecast_project_workflow_column_by_id

Get a single workflow column of a Forecast project by id. Returns the workflow column including id, name, category, sort_order, and created_at. Required: id, project_id.

list_all_forecast_project_workflow_columns

List all workflow columns of a Forecast project. Returns: id, connected_project_workflow_column, name, category, sort_order, created_by, updated_by, created_at, updated_at. Required: project_id.

update_a_forecast_project_workflow_column_by_id

Update a workflow column of a Forecast project. Returns: id, connected_project_workflow_column, name, category, sort_order, created_by, updated_by, created_at, updated_at. Required: project_id, id. Body fields name, category, and sort_order are all optional; category defaults to TODO and sort_order defaults to the last column when omitted.

create_a_forecast_connected_project_workflow_column

Create a new workflow column in a Forecast connected project. Returns the created column with id, name, category, sort_order, and connected_project_workflow_column. Required: connected_project_id, name. Category defaults to TODO; sort_order defaults to the last column.

delete_a_forecast_connected_project_workflow_column_by_id

Delete a workflow column from a Forecast connected project by id. Returns an empty 204 response on success. Does not delete tasks in the workflow column. Required: connected_project_id, id.

get_single_forecast_connected_project_workflow_column_by_id

Get a specific workflow column of a Forecast connected project by id. Returns the column with id, name, category, sort_order, connected_project_workflow_column, created_at, and updated_at. Required: connected_project_id, id.

list_all_forecast_connected_project_workflow_columns

List all workflow columns of a Forecast connected project. Returns columns with id, name, category, sort_order, connected_project_workflow_column, created_at, and updated_at. Required: connected_project_id.

update_a_forecast_connected_project_workflow_column_by_id

Update a workflow column of a Forecast connected project by id. Returns the updated column with id, name, category, sort_order, connected_project_workflow_column, created_at, and updated_at. Required: connected_project_id, id.

create_a_forecast_project_sprint

Create a new project sprint in forecast. Returns: id, connected_project_sprint, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id, name, start_date, end_date.

delete_a_forecast_project_sprint_by_id

Delete a project sprint in forecast by id. Returns an empty 204 response on success. Does not delete tasks in the sprint. Required: project_id, id.

get_single_forecast_project_sprint_by_id

Get a specific project sprint in forecast by id. Returns: id, connected_project_sprint, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id, id.

list_all_forecast_project_sprints

List all sprints of a project in forecast. Returns: id, connected_project_sprint, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id.

update_a_forecast_project_sprint_by_id

Update a project sprint in forecast by id. Returns: id, connected_project_sprint, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id, id, name, start_date, end_date.

create_a_forecast_connected_project_sprint

Create a new sprint on a Forecast connected project. Returns the created sprint object including its id, name, start_date, end_date, created_by, and updated_at. Requires connected_project_id, name, start_date, and end_date.

delete_a_forecast_connected_project_sprint_by_id

Delete a sprint of a Forecast connected project by id. Tasks in the sprint are not deleted. Returns an empty 204 response on success. Requires connected_project_id and id.

get_single_forecast_connected_project_sprint_by_id

Get a specific sprint of a Forecast connected project by id. Returns the sprint object including its id, name, start_date, end_date, created_by, updated_by, created_at, and updated_at. Requires connected_project_id and id.

list_all_forecast_connected_project_sprints

List all sprints of a Forecast connected project. Returns each sprint's id, name, start_date, end_date, created_by, updated_by, created_at, and updated_at. Requires connected_project_id.

update_a_forecast_connected_project_sprint_by_id

Update a sprint of a Forecast connected project by id. Returns the updated sprint object including its id, name, start_date, end_date, created_by, and updated_at. Accepts name, start_date, and end_date in the body. Requires connected_project_id and id.

create_a_forecast_project_milestone

Create a new milestone in a Forecast project. Takes name, start_date, and end_date. Returns the created milestone object including id, name, start_date, end_date, created_at, and updated_at. Required: project_id. Deprecated — use phases instead.

delete_a_forecast_project_milestone_by_id

Delete a milestone in a Forecast project by id; tasks inside the milestone are not deleted. Returns an empty 204 response on success. Required: project_id and id. Deprecated — use phases instead.

get_single_forecast_project_milestone_by_id

Get a single milestone in a Forecast project by id. Returns: id, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id and id. Deprecated — use phases instead.

list_all_forecast_project_milestones

List all milestones of a Forecast project. Returns milestones with id, name, start_date, end_date, created_by, updated_by, created_at, and updated_at. Required: project_id. Deprecated — use phases instead.

update_a_forecast_project_milestone_by_id

Update a milestone in a Forecast project by id; returns the same object as getting a single milestone. Takes name, start_date, and end_date. Returns: id, name, start_date, end_date, created_by, updated_by, created_at, updated_at. Required: project_id and id. Deprecated — use phases instead.

create_a_forecast_project_team_member

Add a person to a Forecast project's team. Returns the created project person including person_id, project_role, project_contact, created_at, and updated_at. Required: project_id, person_id, project_role.

delete_a_forecast_project_team_member_by_id

Remove a person from a Forecast project's team by id. Returns an empty 204 response on success. Required: project_id and id (the person's id).

get_single_forecast_project_team_member_by_id

Get a specific person on a Forecast project's team by id. Returns the project person including person_id, project_role, project_contact, created_by, and updated_at. Required: project_id and id (the person's id).

list_all_forecast_project_team_members

List all persons on a Forecast project's team. Returns project person records including person_id, project_role, project_contact, created_by, and updated_at. Required: project_id.

update_a_forecast_project_team_member_by_id

Update a person on a Forecast project's team by id, e.g. to change their role or project contact flag. Returns the updated project person including person_id, project_role, project_contact, created_at, and updated_at. Required: project_id and id (the person's id).

create_a_forecast_connected_project_team_member

Add a person to a Forecast connected project team. Returns the created team member including person_id, project_role, project_contact, created_by, and created_at. Requires connected_project_id, person_id, and project_role.

delete_a_forecast_connected_project_team_member_by_id

Remove a person from a Forecast connected project team. Returns an empty 204 response on success. Required: connected_project_id and id.

get_single_forecast_connected_project_team_member_by_id

Get a specific person on a Forecast connected project team by id. Returns: person_id, project_role, project_contact, created_by, updated_by, created_at, updated_at. Required: connected_project_id and id.

list_all_forecast_connected_project_team_members

List all persons on a Forecast connected project team. Returns each member's person_id, project_role, project_contact, created_by, and updated_at. Required: connected_project_id.

update_a_forecast_connected_project_team_member_by_id

Update a person in a Forecast connected project team, e.g. to change their role. Returns the updated member including person_id, project_role, project_contact, created_by, and updated_at. Required: connected_project_id and id.

list_all_forecast_person_skills

List the skills associated with a specific person in Forecast. Returns each person-skill record with personId, skillId, and skillLevelId. Required: skill_person_id.

list_all_forecast_project_cards

List all cards in a forecast project. Returns: id, company_card_id, title, description, project_id, role, low_estimate, high_estimate, forecast, remaining, approved, start_date, end_date, bug, un_billable, blocked, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, created_by, updated_by, created_at, updated_at. Required: project_id.

list_all_forecast_card_comments

List comments for a Forecast card. Returns the card's comments with id, card_id, comment, created_at, and person_id. Required: card_id. Deprecated upstream — Forecast recommends using tasks instead.

list_all_forecast_deleted_cards

List all cards that have been deleted in Forecast. Returns: id, deleted_by, deleted_at, company_card_id, title, role, project_id, low_estimate, high_estimate, forecast, remaining, approved, start_date, end_date, bug, un_billable, blocked, sprint, workflow_column, milestone, assigned_persons, labels, owner_id, created_by, updated_by, created_at, updated_at. Supports updated_after (DDMMYYYYTHHmmss)…

list_all_forecast_card_repeating_cards

List the repeating cards scheduled for a forecast card. Returns each repeating card with its id, day-of-week flags, monthly_day, repeat_type, created_by, and updated_by. Required: card_id. Deprecated in favor of the repeating_tasks endpoints.

list_all_forecast_project_repeating_cards

List repeating cards configured for a Forecast project. Returns: id, monday, tuesday, wednesday, thursday, friday, saturday, sunday, monthly_day, repeat_type, created_by, updated_by. Required: project_id. Deprecated upstream — use repeating_tasks instead.

list_all_forecast_task_repeating_tasks

Get the repeating task configured for a task in Forecast. Returns the repeating task object including id, repeat_type (WEEKLY or MONTHLY), per-weekday flags, monthly_day, created_by, and updated_by. Required: task_id.

list_all_forecast_project_repeating_tasks

List repeating tasks for a Forecast project. Returns each repeating task's id, repeat_type, weekday flags (monday through sunday), monthly_day, created_by, and updated_by. Required: project_id.

create_a_forecast_project_expense_item

Create a new expense item on a Forecast project. Returns the created expense item including its id, name, expense_date, cost, price, approved, billable, and notes. Required: project_id, name, cost, expense_category. The billable flag cannot be set to true on non-billable projects.

delete_a_forecast_project_expense_item_by_id

Delete an expense item from a Forecast project by id. Returns an empty 204 response on success. Required: id, project_id.

get_single_forecast_project_expense_item_by_id

Get a specific expense item in a Forecast project by id. Returns the expense item record including its id, name, expense_date, cost, price, approved, billable, and notes. Required: id, project_id.

list_all_forecast_project_expense_items

List all expense items of a Forecast project. Returns each expense item record including its id, name, expense_date, cost, price, approved, and billable. Required: project_id.

update_a_forecast_project_expense_item_by_id

Update an expense item on a Forecast project by id. Returns the updated expense item — the same object as getting a single expense item — including its id, name, cost, price, approved, and billable. Required: id, project_id.

list_all_forecast_placeholder_project_allocations

List all placeholder allocations for a placeholder in forecast. Returns allocations with id, placeholder_id, start_date, end_date, per-weekday minutes (monday–sunday), notes, created_at, and updated_at. Required: placeholder_id.

list_all_forecast_placeholder_allocations_project

List all placeholder allocations for a forecast project. Returns: id, placeholder_id, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, created_by, updated_by, created_at, updated_at. Required: project_id.

list_all_forecast_placeholder_allocations_connected_project

List all placeholder allocations for a connected project in forecast. Returns: id, placeholder_id, start_date, end_date, monday, tuesday, wednesday, thursday, friday, saturday, sunday, notes, created_by, updated_by, created_at, updated_at. Required: connected_project_id.

list_all_forecast_placeholder_project_allocations_project

List placeholder allocations for a Forecast project. Returns each allocation with id, placeholder_id, start_date, end_date, per-weekday minutes (monday–sunday), notes, created_by, updated_by, created_at, and updated_at. Required: project_id.

list_all_placeholder_project_allocations_connected_project

List all placeholders for a connected project in Forecast. Returns each placeholder with id, name, role_id, project_id, department_id, team_ids, skills, and created_at. Required: connected_project_id.

get_single_forecast_placeholder_utilization_by_id

Get a Forecast placeholder's utilization data for a given timespan. Returns: placeholderId, plannedNonBillableProjectMinutes, plannedBillableProjectMinutes, dates, id, name, role_id, project_id, department_id, team_ids, skills, created_by, updated_by, created_at, updated_at. Required: id, start_date, end_date. Both dates are inclusive and formatted YYYYMMDD.

list_all_forecast_company_placeholder_utilization

List forecast placeholder utilization data for a given timespan. Returns: placeholderId, plannedNonBillableProjectMinutes, plannedBillableProjectMinutes, dates, id, name, role_id, project_id, department_id, team_ids, skills, created_by, updated_by, created_at, updated_at. Required: start_date, end_date (YYYYMMDD, both inclusive).

list_all_forecast_person_projects

List the projects a person is assigned to in Forecast. Returns project objects including id, company_project_id, name, stage, status, budget, start_date, and end_date. Required: person_id.

create_a_forecast_person_timer

Start the timer on a person in Forecast. Returns the timer object with its id, task, project, created_at, and updated_at. Required: person_id.

get_single_forecast_person_timer_by_id

Get timer information for a specific person in Forecast. Returns: id, task, project, created_at, updated_at. Required: id.

forecast_person_timers_bulk_update

Stop the timer on a person in Forecast. Returns the timer object with its id, task, project, created_at, and updated_at. Required: person_id; task or project must be supplied if neither was set when the timer was started.

forecast_person_timers_bulk_delete

Reset the timer on a person in Forecast. Returns an empty 204 response on success. Required: person_id.

get_single_forecast_person_utilization_by_id

Get a person's utilization data in Forecast for a given timespan. Returns: person_id, minutes_available, task_minutes_allocated, task_billable_minutes_allocated, project_minutes_allocated, project_billable_minutes_allocated, idle_time_minutes_allocated, time_off_minutes_allocated, dates. Required: id, start_date, end_date (both inclusive, format YYYYMMDD).

list_all_forecast_person_utilization

List utilization data for all company persons in Forecast for a given timespan. Returns a utilization record per person: person_id, minutes_available, task_minutes_allocated, idle_time_minutes_allocated, time_off_minutes_allocated, and a per-day breakdown in dates. Required: start_date, end_date (both inclusive, format YYYYMMDD).

create_a_forecast_project_retainer_period

Create a new retainer period under a Forecast project. Returns the created retainer period including id, name, project_id, retainer_budget_type, period_locked, and created_at. Required: project_id.

delete_a_forecast_project_retainer_period_by_id

Delete a retainer period from a Forecast project. Returns an empty 204 response on success. Required: project_id, id.

get_single_forecast_project_retainer_period_by_id

Get a single retainer period of a Forecast project by id. Returns id, name, project_id, retainer_budget_type, period_locked, invoice_id, and billable time and value-of-service metrics. Required: project_id, id.

list_all_forecast_project_retainer_periods

List all retainer periods of a Forecast project. Each retainer period includes id, name, project_id, start/end date parts, retainer_budget_type, period_locked, and billable time and value-of-service metrics. Required: project_id.

update_a_forecast_project_retainer_period_by_id

Update a retainer period of a Forecast project by id. Returns the updated retainer period including id, name, project_id, retainer_budget_type, period_locked, and updated_at. Required: project_id, id.

list_all_forecast_invoices_by_status

List Forecast invoices filtered by status, including their entries and payments. Returns: id, company_invoice_id, project_id, name, invoice_reference, invoice_type, created_date, due_date, status, entries, payments, created_by, created_at, payment_status. Required: invoice_status (DRAFT, APPROVED, or SENT).

create_a_forecast_project_invoice

Create a new invoice for a specific forecast project. Returns the created invoice object including its id, name, invoice_reference, status, entries, and payments. Required: project_id.

list_all_forecast_project_invoices

List all invoices of a specific forecast project. Returns invoice records including id, name, invoice_reference, status, entries, payments, and payment_status. Required: project_id.

create_a_forecast_invoice_entry

Create a new invoice entry under a specific invoice in Forecast. Returns the newly created invoice entry including its id, name, quantity, unit_price, and tax. Required: invoice_id (path), name, quantity, unit_price.

create_a_forecast_invoice_payment

Create a new invoice payment for a specific invoice in forecast. Returns the newly created invoice payment including its id, invoice_id, notes, amount, date, created_by, and created_at. Required: invoice_id. If the payment body includes an existing payment id, that payment is updated instead of creating a new one.

list_all_forecast_task_financials_project

List financial numbers for every task in a forecast project, in company currency. Returns per-task records including task_id, actual_revenue, actual_cost, planned_revenue, forecast_revenue, and registered_minutes. Required: project_id.

Why Truto

Why use Truto’s MCP server for Forecast

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Forecast in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Forecast account

Use Truto’s frontend SDK to connect your customer’s Forecast account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Forecast

Truto’s Proxy API is a 1-to-1 mapping of the Forecast API. You call us, we call Forecast, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Forecast’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Forecast on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How do end users connect their Forecast account?

Forecast uses API key authentication. Your users generate a personal access token from their Forecast account, and Truto handles secure storage, injection, and rotation across all API calls.

Does Truto support real-time events from Forecast?

Yes. Forecast natively supports webhook subscriptions for events like task, time_registration, project, and phase changes. You can create and manage subscriptions programmatically through Truto so you don't need to poll.

Which Forecast objects can I read and write?

Truto exposes the full Forecast REST surface including projects, phases, sprints, tasks, time registrations, allocations, placeholders, persons, skills, clients, rate cards, invoices, expenses, retainer periods, programs, and financial aggregations — with list, get, create, update, and delete operations where Forecast supports them.

Can I access custom fields on Forecast entities?

Yes. Truto supports Forecast's custom field endpoints for phases, tasks, and time registrations, including listing options and bulk updates, so your integration respects your users' custom data model.

How are pagination and rate limits handled?

Truto normalizes Forecast's pagination into a consistent cursor model and automatically retries with backoff when Forecast rate limits are hit, so you don't need to implement API-specific retry logic.

Can I pull aggregated financial data without stitching endpoints together?

Yes. The financials endpoint returns pre-aggregated numbers for revenue, costs, and forecast-to-complete segmented by project, year, or month — ideal for BI and executive dashboard use cases without manual roll-ups.

Forecast

Get Forecast integrated into your app

Our team understands what it takes to make a Forecast integration successful. A short, crisp 30 minute call with folks who understand the problem.