---
title: Forecast API Integration on Truto
slug: forecast
category: Product Development
canonical: "https://truto.one/integrations/detail/forecast/"
---

# Forecast API Integration on Truto



**Category:** Product Development  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 324 tools for Forecast that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's Forecast account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Forecast.** The Proxy API is a 1-to-1 mapping of the Forecast API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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

- **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.

## FAQs

### 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.

## Related reading

- [Connect Bol.com to Claude: Forecast Sales and Optimize Performance](https://truto.one/blog/connect-bol-com-to-claude-forecast-sales-and-optimize-performance/) — Give Claude secure read and write access to the Bol.com Retailer API. Learn how to generate a managed MCP server to forecast sales and automate e-commerce operations.
