People

Every person in an organization is a people record. The person_type filter distinguishes four kinds:

  • User: has a Productive login and can sign in. Employees, contractors and client users are all users.
  • Contact: a person record without a login, typically someone at a client company kept for CRM and communication. Cannot sign in or track time.
  • Placeholder: a named slot used in resource planning to book time before a real person is hired or assigned. Has no login.
  • Agent: an AI agent acting inside the organization on behalf of its manager.

For more details on how to work with custom fields please refer to Working with custom fields guide.

Creating and inviting a person

Adding a person takes two requests.

  1. POST /api/v2/people creates the person record. It has no login yet and appears as a Contact in the person_type filter. company_id and role_id are required, and the person needs an email before it can be invited.
  2. PATCH /api/v2/people/{id}/invite turns the record into a User. It creates or links the user account for the email, applies company_id, custom_role_id and, for time tracker roles, subsidiary_id, and sends the invitation email.

skip_invite

Add ?skip_invite=true to the invite request to create and link the user account without sending the email. The person is marked virtual: true and invited_at stays empty.

Use it when you are importing people who should exist in planning, reports and time tracking but should not get access yet, or ever. Do not use it for people who need to sign in, since no email is sent and PATCH /api/v2/people/{id}/resend does nothing for virtual people.

Attributes

accessible_deal_id any of: String, Integer
Parameter `filter`

Filter by accessible deal ID — returns people who have access to the specified deal.

Show child attributes
accessible_doc_id any of: String, Integer
Parameter `filter`

Filter by accessible doc ID — returns people who have access to the specified document.

Show child attributes
accessible_filter_id string
Parameter `filter`

Filter by accessible filter ID — returns people who are members of the specified saved view or filter.

accessible_project_id any of: String, Integer
Parameter `filter`

Filter by accessible project ID — returns people who have access to the specified project.

Show child attributes
account_id object
Request

The organization (account) ID.

agent boolean
Response Parameter `filter`

The AI agent account linked to this person, if this person represents an AI agent.

ai_assistant_avatar_url string
Response Request

[DESCRIPTION]

ai_assistant_instructions string
Response Request

Custom instructions the person's AI assistant follows when acting on their behalf. Only returned to the person themselves.

ai_assistant_name string
Response Request

[DESCRIPTION]

approval_policy_assignment approval policy assignment
Response

The approval policy assignment for this person.

approval_policy_id any of: String, Integer
Parameter `filter`

ID of the approval policy assigned to this person for time-off and booking approvals.

Show child attributes
approval_workflow_id any of: String, Integer
Parameter `filter`

Filter by approval workflow ID — returns people who have approvals in the specified workflow.

Show child attributes
archived_at string
Response Parameter `filter`

Timestamp when this person was archived, or null if not archived.

autotracking boolean
Response Request Parameter `filter` Parameter `sort`

Whether automatic time tracking is enabled for this person.

availabilities string
Response

The person's work availability windows.

avatar_url string
Response Request

URL of the person's avatar thumbnail.

bookings_after string
Parameter `filter`

Filter by bookings_after date — used with resourcing filters to find people with bookings ending on or after this date.

bookings_before string
Parameter `filter`

Filter by bookings_before date — used with resourcing filters to find people with bookings starting on or before this date.

champion boolean
Response

Whether this person is a champion contact.

collaborate_project_id any of: String, Integer
Parameter `filter`

[DESCRIPTION]

Show child attributes
color_id string
Response

Color identifier used to visually distinguish this person in the UI.

company company
Response

The company (client) this person belongs to.

company_id any of: String, Integer
Request Parameter `filter`

Filter by company (client) ID.

Show child attributes
company_name object
Parameter `sort`

The name of the company this person belongs to.

contact object
Response Request

Additional contact data for the person, such as phone numbers and addresses.

created_at string
Response Parameter `filter`

Timestamp when this person was created.

custom_field_attachments array of attachment
Response

File attachments associated with this person via custom fields.

custom_field_people array of person
Response

People referenced in custom field values for this person.

custom_fields object
Response Request Parameter `filter` Parameter `sort`

Custom field values for this person.

Response Parameter `sort`

The custom role (permission set) assigned to this person.

custom_role_id any of: String, Integer
Request Parameter `filter`

ID of the custom role assigned to this person, if any.

Show child attributes
deactivated_at string
Response Parameter `filter`

Timestamp when this person was deactivated, or null if currently active.

eligible_replacement_managers any of: String, Integer
Parameter `filter`

Filter for people eligible to be replacement managers for the specified person ID.

Show child attributes
email string
Response Request Parameter `filter` Parameter `sort`

The person's email address.

erased_at string
Response

[DESCRIPTION]

external_id string
Response

External identifier for syncing this person with an external system.

external_sync boolean
Response

Whether this person is managed by an external sync integration.

first_name string
Response Request Parameter `filter`

The person's first name.

full_query string
Parameter `filter`

Full text search filter — matches against name and other indexed fields.

fuzzy_dates string
Parameter `filter`

Fuzzy date filter for approximate date matching.

fuzzy_people string
Parameter `filter`

Fuzzy people filter for approximate person name matching.

granular_notification_preferences object
Request

Granular notification preferences for this person.

holiday_calendar_id any of: String, Integer
Parameter `filter`

ID of the holiday calendar assigned to this person for scheduling and time-off calculations.

Show child attributes
hrm_type_id integer
Response Parameter `filter` Enum

HRM type ID: 1 for employee, 2 for contact. Null for placeholders.

Enum Values (2 values)

  • 1
    Employee
  • 2
    Contact
id any of: String, Integer
Parameter `filter`

The unique identifier of the person.

Show child attributes
import import
Response

The data import that created this person, if they were added through an import rather than manually.

invited_at string
Response

Timestamp when the invitation email was sent to this person.

is_subordinate_to_current_person boolean
Response

Whether this person reports, directly or indirectly, to the person making the request. Only included when the request sends the X-Subordinate-Info header and the requester's permissions are limited to their subordinates rather than to everyone.

is_user boolean
Response

Whether this person has an associated user account and can log in.

job_role job role
Response Parameter `sort`

The job role assigned to this person. Job roles describe what a person does, for example a designer or a project manager, and are managed separately from permission roles.

job_role_id any of: String, Integer
Request Parameter `filter`

ID of the job role assigned to this person, or null if none is set.

Show child attributes
joined_at string
Response Parameter `filter` Parameter `sort`

Date when this person joined the organization.

jump_query string
Parameter `filter`

Quick jump search filter — matches against name for navigation shortcuts.

last_activity_at string
Response Parameter `filter`

Timestamp of the last recorded activity for this person across the platform.

last_name string
Response Request Parameter `filter`

The person's last name.

last_seen_at string
Response Parameter `filter` Parameter `sort`

Timestamp when this person was last seen active in the application.

manager person
Response Parameter `sort`

The person's manager.

manager_id any of: String, Integer
Request Parameter `filter`

ID of the person who is this person's direct manager.

Show child attributes
name object
Parameter `sort`

The person's full name (first and last combined).

nickname string
Response Request

The person's nickname or preferred display name.

offboarding_id integer
Response

ID of the offboarding process associated with this person's deactivation.

offboarding_status string
Response Parameter `filter` Enum

Current offboarding status: not_initiated, in_progress, or completed.

Enum Values (4 values)

  • not_initiated
    Not initiated
  • in_progress
    In progress
  • failed
    Failed
  • completed
    Completed
organization organization
Response

The organization this person belongs to.

original_avatar_url string
Response

URL of the person's original full-size avatar image.

permissions string
Parameter `filter`

Filter by permission set — returns people with the specified permission slugs.

person_session object
Response

[DESCRIPTION]

person_type integer
Parameter `filter` Enum

Filter by person type — values: user (can log in), contact (external), placeholder (resource planning), agent.

Enum Values (4 values)

  • 1
    User
  • 2
    Contact
  • 3
    Placeholder
  • 4
    Agent
placeholder boolean
Response

Whether this person is a placeholder used for resource planning, without a real user account.

project_id any of: String, Integer
Parameter `filter`

Filter by project ID — returns people who are members of the specified project.

Show child attributes
project_watching any of: String, Integer
Parameter `filter`

Filter by project_watching — returns people who are auto-subscribed to the specified project.

Show child attributes
query string
Parameter `filter`

Text search filter — matches by full name (exact) or contains partial name.

role_id integer
Response Request Parameter `filter` Parameter `sort`

Filter by built-in role type ID.

sample_data boolean
Response

Whether this person was created as part of sample/demo data.

schedulable boolean
Parameter `filter` Parameter `sort`

Filter for schedulable people — returns employees, contractors, and placeholders who can be booked.

service_id any of: String, Integer
Parameter `filter`

Filter by service ID — returns people who can track time on the specified service.

Show child attributes
service_type_id any of: String, Integer
Parameter `filter`

Filter by service type ID — returns people assigned to the specified service types.

Show child attributes
service_types array of service type
Response

The service types this person delivers.

shared_seat boolean
Response Request Parameter `filter`

Whether the person holds a shared seat in the billing group.

status integer
Parameter `filter` Enum

Filter by person status: 1 (active) or 2 (deactivated).

Enum Values (2 values)

  • 1
    Active
  • 2
    Deactivated
status_emoji string
Response Request

Emoji shown as the person's current status indicator.

status_expires_at string
Response Request

Timestamp when the current status emoji and text expire.

status_text string
Response Request

Short text message shown as the person's current status.

subscribable_id any of: String, Integer
Parameter `filter`

Filter by subscribable ID — returns subscribers of the specified resource.

Show child attributes
subscribable_type string
Parameter `filter`

Filter by subscribable type — the resource type to match subscribers against.

subscriber_ids object
Request

IDs of people subscribed to follow this person.

subsidiary subsidiary
Response Parameter `sort`

The subsidiary (workplace) this person is associated with.

subsidiary_id any of: String, Integer
Request Parameter `filter`

ID of the subsidiary company this person belongs to, if any.

Show child attributes
tag_list array of string
Response Request

Comma-separated list of tags applied to this person.

tags string
Parameter `filter`

Tags applied to this person.

team any of: String, Integer
Parameter `filter`

Filter by team ID — returns people who belong to the specified team(s).

Show child attributes
teams array of team
Response

The teams this person belongs to.

time_off_status_sync boolean
Response Request

Whether this person's time-off status is synced from an external calendar.

timesheet_submission_disabled boolean
Response Request Parameter `filter`

Whether timesheet submission is disabled for this person.

time_tracking_policy time tracking policy
Response

The time tracking policy assigned to this person.

time_tracking_policy_id integer
Response Request Parameter `filter`

ID of the time tracking policy applied to this person.

time_unlocked boolean
Response Request

Whether the person's time entries are unlocked for editing outside the normal window.

time_unlocked_end_date string
Response Request

End date of the time unlock window.

time_unlocked_interval integer
Response Request

Number of days in the time unlock interval.

time_unlocked_on string
Response Request

The specific date on which the time unlock was applied.

time_unlocked_period_id integer
Response Request

Period identifier for the time unlock.

time_unlocked_start_date string
Response Request

Start date of the time unlock window.

title string
Response Request Parameter `filter` Parameter `sort`

The person's job title (e.g. CEO, Manager, Developer).

two_factor_auth boolean
Response Parameter `filter` Parameter `sort`

Whether two-factor authentication is enabled for this person's user account.

user_id integer
Response

The ID of the user account linked to this person, if any.

virtual boolean
Response Request Parameter `filter`

Whether this is a virtual person record.

Examples

Loading example