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 usUse Cases
Why integrate with Forecast
Common scenarios for SaaS companies building Forecast integrations for their customers.
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.
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.
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.
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.
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.
Automated project provisioning
Create Forecast clients, projects, phases, rate cards, and team members in one workflow when a trigger fires in your product.
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.
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.
Capacity and utilization analytics
Combine person utilization, allocations, placeholders, and non-project time to visualize billable capacity, idle time, and forecasted bookings.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
From the Blog
Forecast integration guides
Deep dives, architecture guides, and practical tutorials for building Forecast integrations.
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.