Companies
create
companies.create
Create a customer company with its account owner, url and description
Risk: write
await corsair.rocketlane.api.companies.create({ company_name: 'Acme Inc', account_owner: { user_id: 401 }, company_url: 'https://acme.example.com' });
| Name | Type | Required | Description |
|---|---|---|---|
company_name | string | Yes | The company name. |
account_owner | object | Yes | — |
company_url | string | No | The company website. |
visibility | EVERYONE | MEMBERS | No | — |
description | string | No | — |
fields | object[] | No | — |
account_owner full type
account_owner full type
{
user_id?: number,
email_id?: string
}
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
company | object | Yes | — |
company full type
company full type
{
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null,
visibility?: string | null,
description?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
accountOwner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
notes?: {
noteId?: number | null,
fieldId?: number | null,
fieldLabel?: string | null,
noteTitle?: string | null,
noteText?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
tags?: {
tagId?: number | null,
label?: string | null,
color?: string | null
}[] | null
}[] | null
}
delete
companies.delete
Delete a company permanently; the API answers 204
Risk: destructive · Irreversible
await corsair.rocketlane.api.companies.delete({ company_id: 301 });
| Name | Type | Required | Description |
|---|---|---|---|
company_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
company_id | number | null | Yes | — |
get
companies.get
Fetch one company with its owner, url, description and custom fields
Risk: read
await corsair.rocketlane.api.companies.get({ company_id: 301 });
| Name | Type | Required | Description |
|---|---|---|---|
company_id | number | Yes | — |
include_fields | string[] | No | — |
include_all_fields | boolean | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
company | object | Yes | — |
company full type
company full type
{
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null,
visibility?: string | null,
description?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
accountOwner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
notes?: {
noteId?: number | null,
fieldId?: number | null,
fieldLabel?: string | null,
noteTitle?: string | null,
noteText?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
tags?: {
tagId?: number | null,
label?: string | null,
color?: string | null
}[] | null
}[] | null
}
list
companies.list
List customer companies with search and token paging
Risk: read
await corsair.rocketlane.api.companies.list({ company_name: { cn: 'acme' }, page_size: 50 });
| Name | Type | Required | Description |
|---|---|---|---|
page_size | number | No | Records per page, 1 to 100. Rocketlane uses 100 when this is omitted. |
page_token | string | No | The next_page_token from the previous page. It is valid for 15 minutes, so paging must keep moving. |
include_fields | string[] | No | — |
include_all_fields | boolean | No | — |
sort_by | string | No | — |
sort_order | ASC | DESC | No | — |
match | all | any | No | How several filters combine: all (every filter, the default) or any (at least one). |
company_name | object | No | Search by company name, e.g. { cn: "acme" }. |
company_name full type
company_name full type
{
eq?: string,
cn?: string,
nc?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
companies | object[] | Yes | — |
pagination | object | null | No | — |
next_page_token | string | null | Yes | Pass as page_token to read the next page; null on the last. |
has_more | boolean | Yes | — |
total_record_count | number | null | Yes | — |
companies full type
companies full type
{
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null,
visibility?: string | null,
description?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
accountOwner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
notes?: {
noteId?: number | null,
fieldId?: number | null,
fieldLabel?: string | null,
noteTitle?: string | null,
noteText?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
tags?: {
tagId?: number | null,
label?: string | null,
color?: string | null
}[] | null
}[] | null
}[]
pagination full type
pagination full type
{
pageSize?: number | null,
hasMore?: boolean | null,
totalRecordCount?: number | null,
nextPage?: string | null,
nextPageToken?: string | null
} | null
update
companies.update
Update a company: its name, owner, url or description
Risk: write
await corsair.rocketlane.api.companies.update({ company_id: 301, description: 'Enterprise customer' });
| Name | Type | Required | Description |
|---|---|---|---|
company_name | string | No | The company name. |
account_owner | object | No | — |
company_url | string | No | The company website. |
visibility | EVERYONE | MEMBERS | No | — |
description | string | No | — |
fields | object[] | No | — |
company_id | number | Yes | — |
account_owner full type
account_owner full type
{
user_id?: number,
email_id?: string
}
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
company | object | Yes | — |
company full type
company full type
{
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null,
visibility?: string | null,
description?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
accountOwner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
notes?: {
noteId?: number | null,
fieldId?: number | null,
fieldLabel?: string | null,
noteTitle?: string | null,
noteText?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
tags?: {
tagId?: number | null,
label?: string | null,
color?: string | null
}[] | null
}[] | null
}
Projects
archive
projects.archive
Archive a project, which keeps its records but removes it from active lists
Risk: write
await corsair.rocketlane.api.projects.archive({ project_id: 201 });
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
project_id | number | null | Yes | — |
create
projects.create
Create a project from a customer and an owner, with its dates, visibility and financial details; Rocketlane emails an invite to each team member added
Risk: write
await corsair.rocketlane.api.projects.create({ project_name: 'Acme onboarding', customer: { company_id: 301 }, owner: { email_id: 'sam@example.com' }, start_date: '2026-11-01' });
| Name | Type | Required | Description |
|---|---|---|---|
project_name | string | Yes | The project title. |
customer | object | Yes | — |
owner | object | Yes | — |
start_date | string | No | An ISO date. |
due_date | string | No | An ISO date on or after start_date. |
visibility | EVERYONE | MEMBERS | No | EVERYONE lets every team member in the firm see the project; MEMBERS limits it to invited members. |
team_member_ids | number[] | No | Users to add to the project. Rocketlane emails each of them an invite. |
currency | string | No | A three-letter currency code. |
annualized_recurring_revenue | number | No | — |
project_fee | number | No | — |
budgeted_hours | number | No | — |
external_reference_id | string | No | — |
auto_create_company | boolean | No | Create the customer company when it does not exist. |
assign_project_owner | boolean | No | — |
fields | object[] | No | — |
customer full type
customer full type
{
company_id?: number,
company_name?: string
}
owner full type
owner full type
{
user_id?: number,
email_id?: string
}
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
projectId?: number | null,
projectName?: string | null,
startDate?: string | null,
dueDate?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
visibility?: string | null,
externalReferenceId?: string | null,
currency?: string | {
currencyCode?: string | null,
currencyName?: string | null,
currencySymbol?: string | null
} | null,
annualizedRecurringRevenue?: number | null,
projectFee?: number | null,
budgetedHours?: number | null,
allocatedHours?: number | null,
trackedHours?: number | null,
progressPercentage?: number | null,
inferredProgress?: string | null,
archived?: boolean | null,
customersInvited?: number | null,
customersJoined?: number | null,
owner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
customer?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
teamMembers?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customers?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customerChampion?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null
} | null,
sources?: {
prefix?: string | null,
startDate?: string | null,
templateId?: number | null,
templateName?: string | null
}[] | null,
partnerCompanies?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
}[] | null,
financials?: {
contractType?: string | null
} | null
}
delete
projects.delete
Delete a project permanently; the API answers 204
Risk: destructive · Irreversible
await corsair.rocketlane.api.projects.delete({ project_id: 201 });
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
project_id | number | null | Yes | — |
get
projects.get
Fetch one project with its customer, owner, team members, status and financial fields
Risk: read
await corsair.rocketlane.api.projects.get({ project_id: 201 });
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | Yes | The project id, from projects.list. |
include_fields | string[] | No | — |
include_all_fields | boolean | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
projectId?: number | null,
projectName?: string | null,
startDate?: string | null,
dueDate?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
visibility?: string | null,
externalReferenceId?: string | null,
currency?: string | {
currencyCode?: string | null,
currencyName?: string | null,
currencySymbol?: string | null
} | null,
annualizedRecurringRevenue?: number | null,
projectFee?: number | null,
budgetedHours?: number | null,
allocatedHours?: number | null,
trackedHours?: number | null,
progressPercentage?: number | null,
inferredProgress?: string | null,
archived?: boolean | null,
customersInvited?: number | null,
customersJoined?: number | null,
owner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
customer?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
teamMembers?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customers?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customerChampion?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null
} | null,
sources?: {
prefix?: string | null,
startDate?: string | null,
templateId?: number | null,
templateName?: string | null
}[] | null,
partnerCompanies?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
}[] | null,
financials?: {
contractType?: string | null
} | null
}
list
projects.list
List projects with filters for company, customer, team member, status and financial ranges, plus token paging
Risk: read
await corsair.rocketlane.api.projects.list({ company_id: { eq: 301 }, status: { oneOf: [2] }, page_size: 50 });
| Name | Type | Required | Description |
|---|---|---|---|
page_size | number | No | Records per page, 1 to 100. Rocketlane uses 100 when this is omitted. |
page_token | string | No | The next_page_token from the previous page. It is valid for 15 minutes, so paging must keep moving. |
include_fields | string[] | No | — |
include_all_fields | boolean | No | — |
sort_by | string | No | — |
sort_order | ASC | DESC | No | — |
match | all | any | No | How several filters combine: all (every filter, the default) or any (at least one). |
project_name | object | No | — |
status | object | No | — |
company_id | object | No | — |
customer_id | object | No | — |
team_member_id | object | No | — |
contract_type | object | No | — |
include_archive | object | No | — |
external_reference_id | object | No | — |
annualized_recurring_revenue | object | No | — |
project_fee | object | No | — |
budgeted_hours | object | No | — |
allocated_hours | object | No | — |
project_name full type
project_name full type
{
eq?: string,
cn?: string,
nc?: string
}
status full type
status full type
{
eq?: string | number,
oneOf?: (string | number)[],
noneOf?: (string | number)[]
}
company_id full type
company_id full type
{
eq?: number,
oneOf?: number[],
noneOf?: number[]
}
customer_id full type
customer_id full type
{
eq?: number,
oneOf?: number[],
noneOf?: number[]
}
team_member_id full type
team_member_id full type
{
eq?: number,
oneOf?: number[],
noneOf?: number[]
}
contract_type full type
contract_type full type
{
eq?: string | number,
oneOf?: (string | number)[],
noneOf?: (string | number)[]
}
include_archive full type
include_archive full type
{
eq?: boolean
}
external_reference_id full type
external_reference_id full type
{
eq?: string
}
annualized_recurring_revenue full type
annualized_recurring_revenue full type
{
eq?: number,
gt?: number,
lt?: number
}
project_fee full type
project_fee full type
{
eq?: number,
gt?: number,
lt?: number
}
budgeted_hours full type
budgeted_hours full type
{
eq?: number,
gt?: number,
ge?: number,
lt?: number,
le?: number
}
allocated_hours full type
allocated_hours full type
{
eq?: number,
gt?: number,
ge?: number,
lt?: number,
le?: number
}
| Name | Type | Required | Description |
|---|---|---|---|
projects | object[] | Yes | — |
pagination | object | null | No | — |
next_page_token | string | null | Yes | Pass as page_token to read the next page; null on the last. |
has_more | boolean | Yes | — |
total_record_count | number | null | Yes | — |
projects full type
projects full type
{
projectId?: number | null,
projectName?: string | null,
startDate?: string | null,
dueDate?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
visibility?: string | null,
externalReferenceId?: string | null,
currency?: string | {
currencyCode?: string | null,
currencyName?: string | null,
currencySymbol?: string | null
} | null,
annualizedRecurringRevenue?: number | null,
projectFee?: number | null,
budgetedHours?: number | null,
allocatedHours?: number | null,
trackedHours?: number | null,
progressPercentage?: number | null,
inferredProgress?: string | null,
archived?: boolean | null,
customersInvited?: number | null,
customersJoined?: number | null,
owner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
customer?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
teamMembers?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customers?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customerChampion?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null
} | null,
sources?: {
prefix?: string | null,
startDate?: string | null,
templateId?: number | null,
templateName?: string | null
}[] | null,
partnerCompanies?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
}[] | null,
financials?: {
contractType?: string | null
} | null
}[]
pagination full type
pagination full type
{
pageSize?: number | null,
hasMore?: boolean | null,
totalRecordCount?: number | null,
nextPage?: string | null,
nextPageToken?: string | null
} | null
update
projects.update
Update a project: its name, dates, visibility, owner, custom fields or financial figures
Risk: write
await corsair.rocketlane.api.projects.update({ project_id: 201, project_name: 'Acme onboarding v2' });
| Name | Type | Required | Description |
|---|---|---|---|
project_name | string | No | The project title. |
owner | object | No | — |
start_date | string | No | An ISO date. |
due_date | string | No | An ISO date on or after start_date. |
visibility | EVERYONE | MEMBERS | No | EVERYONE lets every team member in the firm see the project; MEMBERS limits it to invited members. |
annualized_recurring_revenue | number | No | — |
project_fee | number | No | — |
budgeted_hours | number | No | — |
external_reference_id | string | No | — |
fields | object[] | No | — |
project_id | number | Yes | — |
owner full type
owner full type
{
user_id?: number,
email_id?: string
}
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
projectId?: number | null,
projectName?: string | null,
startDate?: string | null,
dueDate?: string | null,
createdAt?: number | null,
updatedAt?: number | null,
visibility?: string | null,
externalReferenceId?: string | null,
currency?: string | {
currencyCode?: string | null,
currencyName?: string | null,
currencySymbol?: string | null
} | null,
annualizedRecurringRevenue?: number | null,
projectFee?: number | null,
budgetedHours?: number | null,
allocatedHours?: number | null,
trackedHours?: number | null,
progressPercentage?: number | null,
inferredProgress?: string | null,
archived?: boolean | null,
customersInvited?: number | null,
customersJoined?: number | null,
owner?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
customer?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
teamMembers?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customers?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
customerChampion?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null
} | null,
sources?: {
prefix?: string | null,
startDate?: string | null,
templateId?: number | null,
templateName?: string | null
}[] | null,
partnerCompanies?: {
companyId?: number | null,
companyName?: string | null,
companyUrl?: string | null
}[] | null,
financials?: {
contractType?: string | null
} | null
}
Tasks
create
tasks.create
Create a task in a project with its dates, effort, status, phase, assignees and custom fields
Risk: write
await corsair.rocketlane.api.tasks.create({ task_name: 'Kickoff workshop', project_id: 201, start_date: '2026-11-10', effort_in_minutes: 240 });
| Name | Type | Required | Description |
|---|---|---|---|
task_name | string | Yes | The task title. |
project_id | number | Yes | The project the task belongs to. |
task_description | string | No | — |
task_private_note | string | No | — |
start_date | string | No | An ISO date. |
due_date | string | No | An ISO date. |
effort_in_minutes | number | No | — |
progress | number | No | — |
at_risk | boolean | No | — |
type | string | No | — |
phase | object | No | Pick the phase by id or by name. |
status | object | No | The task status, by its numeric value. |
external_reference_id | string | No | — |
private | boolean | No | — |
assignees | object[] | No | — |
follower_ids | number[] | No | — |
parent_task_id | number | No | — |
fields | object[] | No | Custom field values, keyed by the field id. |
user_id or email; the body sends them as userId and emailId.
phase full type
phase full type
{
phaseId?: number,
phaseName?: string
}
status full type
status full type
{
value: number
}
assignees full type
assignees full type
{
user_id?: number,
email?: string
}[]
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
task | object | Yes | — |
task full type
task full type
{
taskId?: number | null,
taskName?: string | null,
taskDescription?: string | null,
taskPrivateNote?: string | null,
startDate?: string | null,
dueDate?: string | null,
startDateActual?: string | null,
dueDateActual?: string | null,
archived?: boolean | null,
effortInMinutes?: number | null,
progress?: number | null,
atRisk?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
revenueRecognitionTask?: boolean | null,
totalAllocatedMins?: number | null,
type?: string | null,
externalReferenceId?: string | null,
billable?: boolean | null,
csatEnabled?: boolean | null,
private?: boolean | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
phase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
priority?: {
value?: number | null,
label?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
assignees?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null
} | null,
followers?: {
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null,
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null
} | null,
dependencies?: {
taskId?: number | null,
taskName?: string | null
}[] | null,
parent?: {
taskId?: number | null,
taskName?: string | null
} | null
}
delete
tasks.delete
Delete a task permanently; the API answers 204
Risk: destructive · Irreversible
await corsair.rocketlane.api.tasks.delete({ task_id: 9001 });
| Name | Type | Required | Description |
|---|---|---|---|
task_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
task_id | number | null | Yes | — |
get
tasks.get
Fetch one task by id with its project, phase, status, assignees, followers and custom fields
Risk: read
await corsair.rocketlane.api.tasks.get({ task_id: 9001 });
| Name | Type | Required | Description |
|---|---|---|---|
task_id | number | Yes | The task id, from tasks.list. |
include_fields | string[] | No | — |
include_all_fields | boolean | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
task | object | Yes | — |
task full type
task full type
{
taskId?: number | null,
taskName?: string | null,
taskDescription?: string | null,
taskPrivateNote?: string | null,
startDate?: string | null,
dueDate?: string | null,
startDateActual?: string | null,
dueDateActual?: string | null,
archived?: boolean | null,
effortInMinutes?: number | null,
progress?: number | null,
atRisk?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
revenueRecognitionTask?: boolean | null,
totalAllocatedMins?: number | null,
type?: string | null,
externalReferenceId?: string | null,
billable?: boolean | null,
csatEnabled?: boolean | null,
private?: boolean | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
phase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
priority?: {
value?: number | null,
label?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
assignees?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null
} | null,
followers?: {
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null,
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null
} | null,
dependencies?: {
taskId?: number | null,
taskName?: string | null
}[] | null,
parent?: {
taskId?: number | null,
taskName?: string | null
} | null
}
list
tasks.list
List tasks with filters for project, phase, status, assignee and date ranges, plus token paging
Risk: read
await corsair.rocketlane.api.tasks.list({ project_id: { eq: 201 }, task_name: { cn: 'kickoff' }, page_size: 100 });
| Name | Type | Required | Description |
|---|---|---|---|
page_size | number | No | Records per page, 1 to 100. Rocketlane uses 100 when this is omitted. |
page_token | string | No | The next_page_token from the previous page. It is valid for 15 minutes, so paging must keep moving. |
include_fields | string[] | No | A projection: only these fields come back. |
include_all_fields | boolean | No | Return every custom field as well as the defaults. |
sort_by | string | No | — |
sort_order | ASC | DESC | No | — |
match | all | any | No | How several filters combine: all (every filter, the default) or any (at least one). |
project_id | object | No | — |
phase_id | object | No | — |
task_name | object | No | — |
task_status | object | No | — |
project_status | object | No | — |
include_archive | object | No | — |
external_reference_id | object | No | — |
assignee_user_id | object | No | — |
effort_in_minutes | object | No | — |
progress | object | No | — |
start_date | object | No | — |
due_date | object | No | — |
created_at | object | No | Epoch milliseconds. |
updated_at | object | No | Epoch milliseconds. |
field.operator keys; the token from pagination.nextPageToken expires after 15 minutes.
project_id full type
project_id full type
{
eq?: number
}
phase_id full type
phase_id full type
{
eq?: number
}
task_name full type
task_name full type
{
eq?: string,
cn?: string,
nc?: string
}
task_status full type
task_status full type
{
eq?: string | number,
oneOf?: (string | number)[],
noneOf?: (string | number)[]
}
project_status full type
project_status full type
{
eq?: string | number,
oneOf?: (string | number)[],
noneOf?: (string | number)[]
}
include_archive full type
include_archive full type
{
eq?: boolean
}
external_reference_id full type
external_reference_id full type
{
eq?: string
}
assignee_user_id full type
assignee_user_id full type
{
eq?: number,
oneOf?: number[],
noneOf?: number[]
}
effort_in_minutes full type
effort_in_minutes full type
{
eq?: number,
gt?: number,
lt?: number
}
progress full type
progress full type
{
eq?: number,
gt?: number,
lt?: number
}
start_date full type
start_date full type
{
eq?: string,
gt?: string,
ge?: string,
lt?: string,
le?: string
}
due_date full type
due_date full type
{
eq?: string,
gt?: string,
ge?: string,
lt?: string,
le?: string
}
created_at full type
created_at full type
{
eq?: number,
gt?: number,
ge?: number,
lt?: number,
le?: number
}
updated_at full type
updated_at full type
{
eq?: number,
gt?: number,
ge?: number,
lt?: number,
le?: number
}
| Name | Type | Required | Description |
|---|---|---|---|
tasks | object[] | Yes | — |
pagination | object | null | No | — |
next_page_token | string | null | Yes | Pass as page_token to read the next page; null on the last. |
has_more | boolean | Yes | — |
total_record_count | number | null | Yes | — |
tasks full type
tasks full type
{
taskId?: number | null,
taskName?: string | null,
taskDescription?: string | null,
taskPrivateNote?: string | null,
startDate?: string | null,
dueDate?: string | null,
startDateActual?: string | null,
dueDateActual?: string | null,
archived?: boolean | null,
effortInMinutes?: number | null,
progress?: number | null,
atRisk?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
revenueRecognitionTask?: boolean | null,
totalAllocatedMins?: number | null,
type?: string | null,
externalReferenceId?: string | null,
billable?: boolean | null,
csatEnabled?: boolean | null,
private?: boolean | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
phase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
priority?: {
value?: number | null,
label?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
assignees?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null
} | null,
followers?: {
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null,
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null
} | null,
dependencies?: {
taskId?: number | null,
taskName?: string | null
}[] | null,
parent?: {
taskId?: number | null,
taskName?: string | null
} | null
}[]
pagination full type
pagination full type
{
pageSize?: number | null,
hasMore?: boolean | null,
totalRecordCount?: number | null,
nextPage?: string | null,
nextPageToken?: string | null
} | null
update
tasks.update
Update a task: its name, description, dates, effort, progress, status or custom fields
Risk: write
await corsair.rocketlane.api.tasks.update({ task_id: 9001, progress: 80, due_date: '2026-11-20' });
| Name | Type | Required | Description |
|---|---|---|---|
task_name | string | No | The task title. |
task_description | string | No | — |
task_private_note | string | No | — |
start_date | string | No | An ISO date. |
due_date | string | No | An ISO date. |
effort_in_minutes | number | No | — |
progress | number | No | — |
at_risk | boolean | No | — |
type | string | No | — |
status | object | No | The task status, by its numeric value. |
external_reference_id | string | No | — |
private | boolean | No | — |
fields | object[] | No | Custom field values, keyed by the field id. |
task_id | number | Yes | — |
status full type
status full type
{
value: number
}
fields full type
fields full type
{
fieldId: number,
value: string | number | boolean | string[] | number[]
}[]
| Name | Type | Required | Description |
|---|---|---|---|
task | object | Yes | — |
task full type
task full type
{
taskId?: number | null,
taskName?: string | null,
taskDescription?: string | null,
taskPrivateNote?: string | null,
startDate?: string | null,
dueDate?: string | null,
startDateActual?: string | null,
dueDateActual?: string | null,
archived?: boolean | null,
effortInMinutes?: number | null,
progress?: number | null,
atRisk?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
revenueRecognitionTask?: boolean | null,
totalAllocatedMins?: number | null,
type?: string | null,
externalReferenceId?: string | null,
billable?: boolean | null,
csatEnabled?: boolean | null,
private?: boolean | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
status?: {
value?: number | null,
label?: string | null
} | null,
phase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
priority?: {
value?: number | null,
label?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
assignees?: {
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null,
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null
} | null,
followers?: {
placeholders?: {
placeholderId?: number | null,
placeholderName?: string | null
}[] | null,
members?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
}[] | null
} | null,
dependencies?: {
taskId?: number | null,
taskName?: string | null
}[] | null,
parent?: {
taskId?: number | null,
taskName?: string | null
} | null
}
Time Entries
create
timeEntries.create
Log time against a project or task: the date and minutes are required
Risk: write
await corsair.rocketlane.api.timeEntries.create({ date: '2026-11-10', minutes: 90, project_id: 201, task_id: 9001, billable: true });
| Name | Type | Required | Description |
|---|---|---|---|
date | string | Yes | The day the time was spent, as an ISO date. |
minutes | number | Yes | Minutes spent. Rocketlane rejects a day whose entries total more than 1440. |
activity_name | string | No | — |
notes | string | No | — |
billable | boolean | No | — |
project_id | number | No | The project to log against. |
task_id | number | No | — |
phase_id | number | No | — |
user_email | string | No | The user the entry belongs to. |
category_id | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
time_entry | object | Yes | — |
time_entry full type
time_entry full type
{
timeEntryId?: number | null,
date?: string | null,
minutes?: number | null,
activityName?: string | null,
notes?: string | null,
billable?: boolean | null,
sourceType?: string | null,
status?: string | null,
deleted?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
submittedAt?: number | null,
approvedAt?: number | null,
rejectedAt?: number | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
task?: {
taskId?: number | null,
taskName?: string | null
} | null,
projectPhase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
user?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
category?: {
categoryId?: number | null,
categoryName?: string | null
} | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
submittedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
approvedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
rejectedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
costRate?: {
rate?: number | null,
currency?: string | null
} | null,
billRate?: {
rate?: number | null,
currency?: string | null
} | null,
budget?: {
budgetId?: number | null,
budgetName?: string | null
} | null
}
delete
timeEntries.delete
Delete a time entry permanently; the API answers 204
Risk: destructive · Irreversible
await corsair.rocketlane.api.timeEntries.delete({ time_entry_id: 501 });
| Name | Type | Required | Description |
|---|---|---|---|
time_entry_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
time_entry_id | number | null | Yes | — |
get
timeEntries.get
Fetch one time entry with its project, task, user, rates and approval state
Risk: read
await corsair.rocketlane.api.timeEntries.get({ time_entry_id: 501 });
| Name | Type | Required | Description |
|---|---|---|---|
time_entry_id | number | Yes | — |
include_fields | string[] | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
time_entry | object | Yes | — |
time_entry full type
time_entry full type
{
timeEntryId?: number | null,
date?: string | null,
minutes?: number | null,
activityName?: string | null,
notes?: string | null,
billable?: boolean | null,
sourceType?: string | null,
status?: string | null,
deleted?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
submittedAt?: number | null,
approvedAt?: number | null,
rejectedAt?: number | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
task?: {
taskId?: number | null,
taskName?: string | null
} | null,
projectPhase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
user?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
category?: {
categoryId?: number | null,
categoryName?: string | null
} | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
submittedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
approvedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
rejectedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
costRate?: {
rate?: number | null,
currency?: string | null
} | null,
billRate?: {
rate?: number | null,
currency?: string | null
} | null,
budget?: {
budgetId?: number | null,
budgetName?: string | null
} | null
}
list
timeEntries.list
List time entries with filters for date, project, task, user, billable and approval status
Risk: read
await corsair.rocketlane.api.timeEntries.list({ date: { ge: '2026-11-01', le: '2026-11-30' }, billable: { eq: true } });
| Name | Type | Required | Description |
|---|---|---|---|
page_size | number | No | Records per page, 1 to 100. Rocketlane uses 100 when this is omitted. |
page_token | string | No | The next_page_token from the previous page. It is valid for 15 minutes, so paging must keep moving. |
include_fields | string[] | No | — |
sort_by | string | No | — |
sort_order | ASC | DESC | No | — |
match | all | any | No | How several filters combine: all (every filter, the default) or any (at least one). |
date | object | No | Filter on the entry date, as an ISO date. |
project_id | object | No | — |
task_id | object | No | — |
user_email | object | No | — |
billable | object | No | — |
approval_status | object | No | — |
include_deleted | object | No | — |
eq, gt, ge, lt and le.
date full type
date full type
{
eq?: string,
gt?: string,
ge?: string,
lt?: string,
le?: string
}
project_id full type
project_id full type
{
eq?: number
}
task_id full type
task_id full type
{
eq?: number,
oneOf?: number[],
noneOf?: number[]
}
user_email full type
user_email full type
{
eq?: string,
cn?: string,
nc?: string
}
billable full type
billable full type
{
eq?: boolean
}
approval_status full type
approval_status full type
{
eq?: string
}
include_deleted full type
include_deleted full type
{
eq?: boolean
}
| Name | Type | Required | Description |
|---|---|---|---|
time_entries | object[] | Yes | — |
pagination | object | null | No | — |
next_page_token | string | null | Yes | Pass as page_token to read the next page; null on the last. |
has_more | boolean | Yes | — |
total_record_count | number | null | Yes | — |
time_entries full type
time_entries full type
{
timeEntryId?: number | null,
date?: string | null,
minutes?: number | null,
activityName?: string | null,
notes?: string | null,
billable?: boolean | null,
sourceType?: string | null,
status?: string | null,
deleted?: boolean | null,
createdAt?: number | null,
updatedAt?: number | null,
submittedAt?: number | null,
approvedAt?: number | null,
rejectedAt?: number | null,
project?: {
projectId?: number | null,
projectName?: string | null
} | null,
task?: {
taskId?: number | null,
taskName?: string | null
} | null,
projectPhase?: {
phaseId?: number | null,
phaseName?: string | null
} | null,
user?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
category?: {
categoryId?: number | null,
categoryName?: string | null
} | null,
createdBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
updatedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
submittedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
approvedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
rejectedBy?: {
userId?: number | null,
emailId?: string | null,
firstName?: string | null,
lastName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
costRate?: {
rate?: number | null,
currency?: string | null
} | null,
billRate?: {
rate?: number | null,
currency?: string | null
} | null,
budget?: {
budgetId?: number | null,
budgetName?: string | null
} | null
}[]
pagination full type
pagination full type
{
pageSize?: number | null,
hasMore?: boolean | null,
totalRecordCount?: number | null,
nextPage?: string | null,
nextPageToken?: string | null
} | null
Users
get
users.get
Fetch one user with their role, company, capacity and custom fields
Risk: read
await corsair.rocketlane.api.users.get({ user_id: 401 });
| Name | Type | Required | Description |
|---|---|---|---|
user_id | number | Yes | — |
include_fields | string[] | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
user | object | Yes | — |
user full type
user full type
{
userId?: number | null,
email?: string | null,
firstName?: string | null,
lastName?: string | null,
type?: string | null,
status?: string | null,
profilePictureUrl?: string | null,
capacityInMinutes?: number | null,
createdAt?: number | null,
updatedAt?: number | null,
role?: {
roleId?: number | null,
roleName?: string | null
} | null,
company?: {
companyId?: number | null,
companyName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
permission?: {
permissionId?: number | null,
permissionName?: string | null
} | null,
holidayCalendar?: {
calenderId?: number | null,
calenderName?: string | null
} | null
}
list
users.list
List the team members on the instance with token paging
Risk: read
await corsair.rocketlane.api.users.list({ page_size: 50 });
| Name | Type | Required | Description |
|---|---|---|---|
page_size | number | No | Records per page, 1 to 100. Rocketlane uses 100 when this is omitted. |
page_token | string | No | The next_page_token from the previous page. It is valid for 15 minutes, so paging must keep moving. |
include_fields | string[] | No | — |
match | all | any | No | How several filters combine: all (every filter, the default) or any (at least one). |
sort_by | string | No | — |
sort_order | ASC | DESC | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
users | object[] | Yes | — |
pagination | object | null | No | — |
next_page_token | string | null | Yes | Pass as page_token to read the next page; null on the last. |
has_more | boolean | Yes | — |
total_record_count | number | null | Yes | — |
users full type
users full type
{
userId?: number | null,
email?: string | null,
firstName?: string | null,
lastName?: string | null,
type?: string | null,
status?: string | null,
profilePictureUrl?: string | null,
capacityInMinutes?: number | null,
createdAt?: number | null,
updatedAt?: number | null,
role?: {
roleId?: number | null,
roleName?: string | null
} | null,
company?: {
companyId?: number | null,
companyName?: string | null
} | null,
fields?: {
fieldId?: number | null,
fieldLabel?: string | null,
fieldValue?: any,
fieldValueLabel?: any
}[] | null,
permission?: {
permissionId?: number | null,
permissionName?: string | null
} | null,
holidayCalendar?: {
calenderId?: number | null,
calenderName?: string | null
} | null
}[]
pagination full type
pagination full type
{
pageSize?: number | null,
hasMore?: boolean | null,
totalRecordCount?: number | null,
nextPage?: string | null,
nextPageToken?: string | null
} | null