This connector is optimized for AI agents. For the data replication connector, see Harvest .
This is the full reference documentation for the Harvest agent connector.
Supported entities and actions
The Harvest connector supports the following entities and actions.
Entity Actions Users List , Get , Search Clients List , Get , Search Contacts List , Get , Search Company Get , Search Projects List , Get , Search Tasks List , Get , Search Time Entries List , Get , Search Invoices List , Get , Search Invoice Item Categories List , Get , Search Estimates List , Get , Search Estimate Item Categories List , Get , Search Expenses List , Get , Search Expense Categories List , Get , Search Roles List , Get , Search User Assignments List , Search Task Assignments List , Search Time Projects List , Search Time Tasks List , Search
Users
Users List
Returns a paginated list of users in the Harvest account
Python SDK
await harvest . users . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "users", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegerfirst_namenull | stringlast_namenull | stringemailnull | stringtelephonenull | stringtimezonenull | stringhas_access_to_all_future_projectsnull | booleanis_contractornull | booleanis_activenull | booleanweekly_capacitynull | integerdefault_hourly_ratenull | numbercost_ratenull | numberrolesnull | arrayaccess_rolesnull | arrayavatar_urlnull | stringcreated_atnull | stringupdated_atnull | stringemployee_idnull | stringcalendar_integration_enablednull | booleancalendar_integration_sourcenull | stringcan_create_projectsnull | booleanpermissions_claimsnull | array
Field Name Type Description next_linknull | string
Users Get
Get a single user by ID
Python SDK
await harvest . users . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "users", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes User ID
Response Schema Records Field Name Type Description idintegerfirst_namenull | stringlast_namenull | stringemailnull | stringtelephonenull | stringtimezonenull | stringhas_access_to_all_future_projectsnull | booleanis_contractornull | booleanis_activenull | booleanweekly_capacitynull | integerdefault_hourly_ratenull | numbercost_ratenull | numberrolesnull | arrayaccess_rolesnull | arrayavatar_urlnull | stringcreated_atnull | stringupdated_atnull | stringemployee_idnull | stringcalendar_integration_enablednull | booleancalendar_integration_sourcenull | stringcan_create_projectsnull | booleanpermissions_claimsnull | array
Users Search
Search and filter users records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . users . search ( query = { "filter" : { "eq" : { "avatar_url" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "users", "action": "search", "params": { "query": {"filter": {"eq": {"avatar_url": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description avatar_urlstringAvatar URL cost_ratenumberCost rate created_atstringWhen created default_hourly_ratenumberDefault hourly rate emailstringEmail address first_namestringFirst name idintegerUnique identifier is_activebooleanWhether active is_contractorbooleanWhether contractor last_namestringLast name rolesarrayAssigned roles telephonestringPhone number timezonestringTimezone updated_atstringWhen last updated weekly_capacityintegerWeekly capacity in seconds
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].avatar_urlstringAvatar URL data[].cost_ratenumberCost rate data[].created_atstringWhen created data[].default_hourly_ratenumberDefault hourly rate data[].emailstringEmail address data[].first_namestringFirst name data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].is_contractorbooleanWhether contractor data[].last_namestringLast name data[].rolesarrayAssigned roles data[].telephonestringPhone number data[].timezonestringTimezone data[].updated_atstringWhen last updated data[].weekly_capacityintegerWeekly capacity in seconds
Clients
Clients List
Returns a paginated list of clients
Python SDK
await harvest . clients . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "clients", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringis_activenull | booleanaddressnull | stringstatement_keynull | stringcurrencynull | stringcreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Clients Get
Get a single client by ID
Python SDK
await harvest . clients . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "clients", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Client ID
Response Schema Records Field Name Type Description idintegernamenull | stringis_activenull | booleanaddressnull | stringstatement_keynull | stringcurrencynull | stringcreated_atnull | stringupdated_atnull | string
Clients Search
Search and filter clients records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . clients . search ( query = { "filter" : { "eq" : { "address" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "clients", "action": "search", "params": { "query": {"filter": {"eq": {"address": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description addressstringThe client's postal address created_atstringWhen the client record was created currencystringThe currency used by the client idintegerUnique identifier for the client is_activebooleanWhether the client is active namestringThe client's name updated_atstringWhen the client record was last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].addressstringThe client's postal address data[].created_atstringWhen the client record was created data[].currencystringThe currency used by the client data[].idintegerUnique identifier for the client data[].is_activebooleanWhether the client is active data[].namestringThe client's name data[].updated_atstringWhen the client record was last updated
Returns a paginated list of contacts
Python SDK
await harvest . contacts . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "contacts", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegertitlenull | stringfirst_namenull | stringlast_namenull | stringemailnull | stringphone_officenull | stringphone_mobilenull | stringfaxnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | object
Field Name Type Description next_linknull | string
Get a single contact by ID
Python SDK
await harvest . contacts . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "contacts", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Contact ID
Response Schema Records Field Name Type Description idintegertitlenull | stringfirst_namenull | stringlast_namenull | stringemailnull | stringphone_officenull | stringphone_mobilenull | stringfaxnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | object
Search and filter contacts records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . contacts . search ( query = { "filter" : { "eq" : { "client" : { } } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "contacts", "action": "search", "params": { "query": {"filter": {"eq": {"client": {}}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description clientobjectClient associated with the contact created_atstringWhen created emailstringEmail address first_namestringFirst name idintegerUnique identifier last_namestringLast name titlestringJob title updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].clientobjectClient associated with the contact data[].created_atstringWhen created data[].emailstringEmail address data[].first_namestringFirst name data[].idintegerUnique identifier data[].last_namestringLast name data[].titlestringJob title data[].updated_atstringWhen last updated
Company
Company Get
Returns the company information for the authenticated account
Python SDK
await harvest . company . get ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "company", "action": "get" }'
Response Schema Records Field Name Type Description base_urinull | stringfull_domainnull | stringnamenull | stringis_activenull | booleanweek_start_daynull | stringwants_timestamp_timersnull | booleantime_formatnull | stringdate_formatnull | stringplan_typenull | stringclocknull | stringcurrency_code_displaynull | stringcurrency_symbol_displaynull | stringdecimal_symbolnull | stringthousands_separatornull | stringcolor_schemenull | stringweekly_capacitynull | integerexpense_featurenull | booleaninvoice_featurenull | booleanestimate_featurenull | booleanapproval_featurenull | booleanteam_featurenull | booleancurrencynull | stringsaml_sign_in_requirednull | booleanday_entry_notes_requirednull | boolean
Company Search
Search and filter company records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . company . search ( query = { "filter" : { "eq" : { "base_uri" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "company", "action": "search", "params": { "query": {"filter": {"eq": {"base_uri": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description base_uristringThe base URI currencystringCurrency used by the company full_domainstringThe full domain name is_activebooleanWhether the company is active namestringThe name of the company plan_typestringThe plan type weekly_capacityintegerWeekly capacity in seconds
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].base_uristringThe base URI data[].currencystringCurrency used by the company data[].full_domainstringThe full domain name data[].is_activebooleanWhether the company is active data[].namestringThe name of the company data[].plan_typestringThe plan type data[].weekly_capacityintegerWeekly capacity in seconds
Projects
Projects List
Returns a paginated list of projects
Python SDK
await harvest . projects . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "projects", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringcodenull | stringis_activenull | booleanis_billablenull | booleanis_fixed_feenull | booleanbill_bynull | stringhourly_ratenull | numberbudget_bynull | stringbudget_is_monthlynull | booleanbudgetnull | numbercost_budgetnull | numbercost_budget_include_expensesnull | booleannotify_when_over_budgetnull | booleanover_budget_notification_percentagenull | numberover_budget_notification_datenull | stringshow_budget_to_allnull | booleanfeenull | numbernotesnull | stringstarts_onnull | stringends_onnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | object
Field Name Type Description next_linknull | string
Projects Get
Get a single project by ID
Python SDK
await harvest . projects . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "projects", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Project ID
Response Schema Records Field Name Type Description idintegernamenull | stringcodenull | stringis_activenull | booleanis_billablenull | booleanis_fixed_feenull | booleanbill_bynull | stringhourly_ratenull | numberbudget_bynull | stringbudget_is_monthlynull | booleanbudgetnull | numbercost_budgetnull | numbercost_budget_include_expensesnull | booleannotify_when_over_budgetnull | booleanover_budget_notification_percentagenull | numberover_budget_notification_datenull | stringshow_budget_to_allnull | booleanfeenull | numbernotesnull | stringstarts_onnull | stringends_onnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | object
Projects Search
Search and filter projects records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . projects . search ( query = { "filter" : { "eq" : { "budget" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "projects", "action": "search", "params": { "query": {"filter": {"eq": {"budget": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description budgetnumberBudget amount clientobjectClient details codestringProject code created_atstringWhen created hourly_ratenumberHourly rate idintegerUnique identifier is_activebooleanWhether active is_billablebooleanWhether billable namestringProject name starts_onstringStart date updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].budgetnumberBudget amount data[].clientobjectClient details data[].codestringProject code data[].created_atstringWhen created data[].hourly_ratenumberHourly rate data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].is_billablebooleanWhether billable data[].namestringProject name data[].starts_onstringStart date data[].updated_atstringWhen last updated
Tasks
Tasks List
Returns a paginated list of tasks
Python SDK
await harvest . tasks . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "tasks", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringbillable_by_defaultnull | booleandefault_hourly_ratenull | numberis_defaultnull | booleanis_activenull | booleancreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Tasks Get
Get a single task by ID
Python SDK
await harvest . tasks . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "tasks", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Task ID
Response Schema Records Field Name Type Description idintegernamenull | stringbillable_by_defaultnull | booleandefault_hourly_ratenull | numberis_defaultnull | booleanis_activenull | booleancreated_atnull | stringupdated_atnull | string
Tasks Search
Search and filter tasks records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . tasks . search ( query = { "filter" : { "eq" : { "billable_by_default" : True } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "tasks", "action": "search", "params": { "query": {"filter": {"eq": {"billable_by_default": True}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billable_by_defaultbooleanWhether billable by default created_atstringWhen created default_hourly_ratenumberDefault hourly rate idintegerUnique identifier is_activebooleanWhether active namestringTask name updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billable_by_defaultbooleanWhether billable by default data[].created_atstringWhen created data[].default_hourly_ratenumberDefault hourly rate data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].namestringTask name data[].updated_atstringWhen last updated
Time Entries
Time Entries List
Returns a paginated list of time entries
Python SDK
await harvest . time_entries . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_entries", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegerspent_datenull | stringhoursnull | numberhours_without_timernull | numberrounded_hoursnull | numbernotesnull | stringis_lockednull | booleanlocked_reasonnull | stringis_closednull | booleanis_billednull | booleantimer_started_atnull | stringstarted_timenull | stringended_timenull | stringis_runningnull | booleanbillablenull | booleanbudgetednull | booleanbillable_ratenull | numbercost_ratenull | numbercreated_atnull | stringupdated_atnull | stringapproval_statusnull | stringis_explicitly_lockednull | booleanusernull | objectclientnull | objectprojectnull | objecttasknull | objectuser_assignmentnull | objecttask_assignmentnull | objectexternal_referencenull | objectinvoicenull | object
Field Name Type Description next_linknull | string
Time Entries Get
Get a single time entry by ID
Python SDK
await harvest . time_entries . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_entries", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Time entry ID
Response Schema Records Field Name Type Description idintegerspent_datenull | stringhoursnull | numberhours_without_timernull | numberrounded_hoursnull | numbernotesnull | stringis_lockednull | booleanlocked_reasonnull | stringis_closednull | booleanis_billednull | booleantimer_started_atnull | stringstarted_timenull | stringended_timenull | stringis_runningnull | booleanbillablenull | booleanbudgetednull | booleanbillable_ratenull | numbercost_ratenull | numbercreated_atnull | stringupdated_atnull | stringapproval_statusnull | stringis_explicitly_lockednull | booleanusernull | objectclientnull | objectprojectnull | objecttasknull | objectuser_assignmentnull | objecttask_assignmentnull | objectexternal_referencenull | objectinvoicenull | object
Time Entries Search
Search and filter time entries records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . time_entries . search ( query = { "filter" : { "eq" : { "billable" : True } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_entries", "action": "search", "params": { "query": {"filter": {"eq": {"billable": True}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billablebooleanWhether billable clientobjectAssociated client created_atstringWhen created hoursnumberHours logged idintegerUnique identifier is_billedbooleanWhether billed notesstringNotes projectobjectAssociated project spent_datestringDate time was spent taskobjectAssociated task updated_atstringWhen last updated userobjectAssociated user
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billablebooleanWhether billable data[].clientobjectAssociated client data[].created_atstringWhen created data[].hoursnumberHours logged data[].idintegerUnique identifier data[].is_billedbooleanWhether billed data[].notesstringNotes data[].projectobjectAssociated project data[].spent_datestringDate time was spent data[].taskobjectAssociated task data[].updated_atstringWhen last updated data[].userobjectAssociated user
Invoices
Invoices List
Returns a paginated list of invoices
Python SDK
await harvest . invoices . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoices", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegerclient_keynull | stringnumbernull | stringpurchase_ordernull | stringamountnull | numberdue_amountnull | numbertaxnull | numbertax_amountnull | numbertax2null | numbertax2_amountnull | numberdiscountnull | numberdiscount_amountnull | numbersubjectnull | stringnotesnull | stringcurrencynull | stringstatenull | stringperiod_startnull | stringperiod_endnull | stringissue_datenull | stringdue_datenull | stringpayment_termnull | stringpayment_optionsnull | arraysent_atnull | stringpaid_atnull | stringpaid_datenull | stringclosed_atnull | stringrecurring_invoice_idnull | integercreated_atnull | stringupdated_atnull | stringclientnull | objectestimatenull | objectretainernull | objectcreatornull | objectline_itemsnull | array
Field Name Type Description next_linknull | string
Invoices Get
Get a single invoice by ID
Python SDK
await harvest . invoices . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoices", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Invoice ID
Response Schema Records Field Name Type Description idintegerclient_keynull | stringnumbernull | stringpurchase_ordernull | stringamountnull | numberdue_amountnull | numbertaxnull | numbertax_amountnull | numbertax2null | numbertax2_amountnull | numberdiscountnull | numberdiscount_amountnull | numbersubjectnull | stringnotesnull | stringcurrencynull | stringstatenull | stringperiod_startnull | stringperiod_endnull | stringissue_datenull | stringdue_datenull | stringpayment_termnull | stringpayment_optionsnull | arraysent_atnull | stringpaid_atnull | stringpaid_datenull | stringclosed_atnull | stringrecurring_invoice_idnull | integercreated_atnull | stringupdated_atnull | stringclientnull | objectestimatenull | objectretainernull | objectcreatornull | objectline_itemsnull | array
Invoices Search
Search and filter invoices records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . invoices . search ( query = { "filter" : { "eq" : { "amount" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoices", "action": "search", "params": { "query": {"filter": {"eq": {"amount": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description amountnumberTotal amount clientobjectClient details created_atstringWhen created currencystringCurrency due_amountnumberAmount due due_datestringDue date idintegerUnique identifier issue_datestringIssue date numberstringInvoice number statestringCurrent state subjectstringSubject updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].amountnumberTotal amount data[].clientobjectClient details data[].created_atstringWhen created data[].currencystringCurrency data[].due_amountnumberAmount due data[].due_datestringDue date data[].idintegerUnique identifier data[].issue_datestringIssue date data[].numberstringInvoice number data[].statestringCurrent state data[].subjectstringSubject data[].updated_atstringWhen last updated
Invoice Item Categories
Invoice Item Categories List
Returns a paginated list of invoice item categories
Python SDK
await harvest . invoice_item_categories . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoice_item_categories", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringuse_as_servicenull | booleanuse_as_expensenull | booleancreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Invoice Item Categories Get
Get a single invoice item category by ID
Python SDK
await harvest . invoice_item_categories . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoice_item_categories", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Invoice item category ID
Response Schema Records Field Name Type Description idintegernamenull | stringuse_as_servicenull | booleanuse_as_expensenull | booleancreated_atnull | stringupdated_atnull | string
Invoice Item Categories Search
Search and filter invoice item categories records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . invoice_item_categories . search ( query = { "filter" : { "eq" : { "created_at" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "invoice_item_categories", "action": "search", "params": { "query": {"filter": {"eq": {"created_at": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description created_atstringWhen created idintegerUnique identifier namestringCategory name updated_atstringWhen last updated use_as_expensebooleanWhether used as expense type use_as_servicebooleanWhether used as service type
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].created_atstringWhen created data[].idintegerUnique identifier data[].namestringCategory name data[].updated_atstringWhen last updated data[].use_as_expensebooleanWhether used as expense type data[].use_as_servicebooleanWhether used as service type
Estimates
Estimates List
Returns a paginated list of estimates
Python SDK
await harvest . estimates . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimates", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegerclient_keynull | stringnumbernull | stringpurchase_ordernull | stringamountnull | numbertaxnull | numbertax_amountnull | numbertax2null | numbertax2_amountnull | numberdiscountnull | numberdiscount_amountnull | numbersubjectnull | stringnotesnull | stringcurrencynull | stringstatenull | stringissue_datenull | stringsent_atnull | stringaccepted_atnull | stringdeclined_atnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | objectcreatornull | objectline_itemsnull | array
Field Name Type Description next_linknull | string
Estimates Get
Get a single estimate by ID
Python SDK
await harvest . estimates . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimates", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Estimate ID
Response Schema Records Field Name Type Description idintegerclient_keynull | stringnumbernull | stringpurchase_ordernull | stringamountnull | numbertaxnull | numbertax_amountnull | numbertax2null | numbertax2_amountnull | numberdiscountnull | numberdiscount_amountnull | numbersubjectnull | stringnotesnull | stringcurrencynull | stringstatenull | stringissue_datenull | stringsent_atnull | stringaccepted_atnull | stringdeclined_atnull | stringcreated_atnull | stringupdated_atnull | stringclientnull | objectcreatornull | objectline_itemsnull | array
Estimates Search
Search and filter estimates records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . estimates . search ( query = { "filter" : { "eq" : { "amount" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimates", "action": "search", "params": { "query": {"filter": {"eq": {"amount": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description amountnumberTotal amount clientobjectClient details created_atstringWhen created currencystringCurrency idintegerUnique identifier issue_datestringIssue date numberstringEstimate number statestringCurrent state subjectstringSubject updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].amountnumberTotal amount data[].clientobjectClient details data[].created_atstringWhen created data[].currencystringCurrency data[].idintegerUnique identifier data[].issue_datestringIssue date data[].numberstringEstimate number data[].statestringCurrent state data[].subjectstringSubject data[].updated_atstringWhen last updated
Estimate Item Categories
Estimate Item Categories List
Returns a paginated list of estimate item categories
Python SDK
await harvest . estimate_item_categories . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimate_item_categories", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringcreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Estimate Item Categories Get
Get a single estimate item category by ID
Python SDK
await harvest . estimate_item_categories . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimate_item_categories", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Estimate item category ID
Response Schema Records Field Name Type Description idintegernamenull | stringcreated_atnull | stringupdated_atnull | string
Estimate Item Categories Search
Search and filter estimate item categories records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . estimate_item_categories . search ( query = { "filter" : { "eq" : { "created_at" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "estimate_item_categories", "action": "search", "params": { "query": {"filter": {"eq": {"created_at": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description created_atstringWhen created idintegerUnique identifier namestringCategory name updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].created_atstringWhen created data[].idintegerUnique identifier data[].namestringCategory name data[].updated_atstringWhen last updated
Expenses
Expenses List
Returns a paginated list of expenses
Python SDK
await harvest . expenses . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expenses", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernotesnull | stringtotal_costnull | numberunitsnull | numberis_closednull | booleanis_lockednull | booleanis_billednull | booleanlocked_reasonnull | stringspent_datenull | stringcreated_atnull | stringupdated_atnull | stringbillablenull | booleanapproval_statusnull | stringis_explicitly_lockednull | booleanreceiptnull | objectusernull | objectuser_assignmentnull | objectprojectnull | objectexpense_categorynull | objectclientnull | objectinvoicenull | object
Field Name Type Description next_linknull | string
Expenses Get
Get a single expense by ID
Python SDK
await harvest . expenses . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expenses", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Expense ID
Response Schema Records Field Name Type Description idintegernotesnull | stringtotal_costnull | numberunitsnull | numberis_closednull | booleanis_lockednull | booleanis_billednull | booleanlocked_reasonnull | stringspent_datenull | stringcreated_atnull | stringupdated_atnull | stringbillablenull | booleanapproval_statusnull | stringis_explicitly_lockednull | booleanreceiptnull | objectusernull | objectuser_assignmentnull | objectprojectnull | objectexpense_categorynull | objectclientnull | objectinvoicenull | object
Expenses Search
Search and filter expenses records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . expenses . search ( query = { "filter" : { "eq" : { "billable" : True } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expenses", "action": "search", "params": { "query": {"filter": {"eq": {"billable": True}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billablebooleanWhether billable clientobjectAssociated client created_atstringWhen created expense_categoryobjectExpense category idintegerUnique identifier is_billedbooleanWhether billed notesstringNotes projectobjectAssociated project spent_datestringDate spent total_costnumberTotal cost updated_atstringWhen last updated userobjectAssociated user
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billablebooleanWhether billable data[].clientobjectAssociated client data[].created_atstringWhen created data[].expense_categoryobjectExpense category data[].idintegerUnique identifier data[].is_billedbooleanWhether billed data[].notesstringNotes data[].projectobjectAssociated project data[].spent_datestringDate spent data[].total_costnumberTotal cost data[].updated_atstringWhen last updated data[].userobjectAssociated user
Expense Categories
Expense Categories List
Returns a paginated list of expense categories
Python SDK
await harvest . expense_categories . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expense_categories", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringunit_namenull | stringunit_pricenull | numberis_activenull | booleancreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Expense Categories Get
Get a single expense category by ID
Python SDK
await harvest . expense_categories . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expense_categories", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Expense category ID
Response Schema Records Field Name Type Description idintegernamenull | stringunit_namenull | stringunit_pricenull | numberis_activenull | booleancreated_atnull | stringupdated_atnull | string
Expense Categories Search
Search and filter expense categories records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . expense_categories . search ( query = { "filter" : { "eq" : { "created_at" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "expense_categories", "action": "search", "params": { "query": {"filter": {"eq": {"created_at": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description created_atstringWhen created idintegerUnique identifier is_activebooleanWhether active namestringCategory name unit_namestringUnit name unit_pricenumberUnit price updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].created_atstringWhen created data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].namestringCategory name data[].unit_namestringUnit name data[].unit_pricenumberUnit price data[].updated_atstringWhen last updated
Roles
Roles List
Returns a paginated list of roles
Python SDK
await harvest . roles . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "roles", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegernamenull | stringuser_idsnull | arraycreated_atnull | stringupdated_atnull | string
Field Name Type Description next_linknull | string
Roles Get
Get a single role by ID
Python SDK
await harvest . roles . get ( id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "roles", "action": "get", "params": { "id": 0 } }'
Parameters
Parameter Name Type Required Description idintegerYes Role ID
Response Schema Records Field Name Type Description idintegernamenull | stringuser_idsnull | arraycreated_atnull | stringupdated_atnull | string
Roles Search
Search and filter roles records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . roles . search ( query = { "filter" : { "eq" : { "created_at" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "roles", "action": "search", "params": { "query": {"filter": {"eq": {"created_at": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description created_atstringWhen created idintegerUnique identifier namestringRole name updated_atstringWhen last updated user_idsarrayUser IDs with this role
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].created_atstringWhen created data[].idintegerUnique identifier data[].namestringRole name data[].updated_atstringWhen last updated data[].user_idsarrayUser IDs with this role
User Assignments
User Assignments List
Returns a paginated list of user assignments across all projects
Python SDK
await harvest . user_assignments . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "user_assignments", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegeris_project_managernull | booleanis_activenull | booleanbudgetnull | numbercreated_atnull | stringupdated_atnull | stringhourly_ratenull | numberuse_default_ratesnull | booleanprojectnull | objectusernull | object
Field Name Type Description next_linknull | string
User Assignments Search
Search and filter user assignments records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . user_assignments . search ( query = { "filter" : { "eq" : { "budget" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "user_assignments", "action": "search", "params": { "query": {"filter": {"eq": {"budget": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description budgetnumberBudget created_atstringWhen created hourly_ratenumberHourly rate idintegerUnique identifier is_activebooleanWhether active is_project_managerbooleanWhether project manager projectobjectAssociated project updated_atstringWhen last updated userobjectAssociated user
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].budgetnumberBudget data[].created_atstringWhen created data[].hourly_ratenumberHourly rate data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].is_project_managerbooleanWhether project manager data[].projectobjectAssociated project data[].updated_atstringWhen last updated data[].userobjectAssociated user
Task Assignments
Task Assignments List
Returns a paginated list of task assignments across all projects
Python SDK
await harvest . task_assignments . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "task_assignments", "action": "list" }'
Parameters
Parameter Name Type Required Description per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description idintegerbillablenull | booleanis_activenull | booleancreated_atnull | stringupdated_atnull | stringhourly_ratenull | numberbudgetnull | numberprojectnull | objecttasknull | object
Field Name Type Description next_linknull | string
Task Assignments Search
Search and filter task assignments records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . task_assignments . search ( query = { "filter" : { "eq" : { "billable" : True } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "task_assignments", "action": "search", "params": { "query": {"filter": {"eq": {"billable": True}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billablebooleanWhether billable created_atstringWhen created hourly_ratenumberHourly rate idintegerUnique identifier is_activebooleanWhether active projectobjectAssociated project taskobjectAssociated task updated_atstringWhen last updated
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billablebooleanWhether billable data[].created_atstringWhen created data[].hourly_ratenumberHourly rate data[].idintegerUnique identifier data[].is_activebooleanWhether active data[].projectobjectAssociated project data[].taskobjectAssociated task data[].updated_atstringWhen last updated
Time Projects
Time Projects List
Returns time report data grouped by project for a given date range
Python SDK
await harvest . time_projects . list ( from_ = "<str>" , to = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_projects", "action": "list", "params": { "from": "<str>", "to": "<str>" } }'
Parameters
Parameter Name Type Required Description fromstringYes Start date for the report in YYYYMMDD format tostringYes End date for the report in YYYYMMDD format per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description project_idnull | integerproject_namenull | stringclient_idnull | integerclient_namenull | stringtotal_hoursnull | numberbillable_hoursnull | numbercurrencynull | stringbillable_amountnull | number
Field Name Type Description next_linknull | string
Time Projects Search
Search and filter time projects records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . time_projects . search ( query = { "filter" : { "eq" : { "billable_amount" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_projects", "action": "search", "params": { "query": {"filter": {"eq": {"billable_amount": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billable_amountnumberTotal billable amount billable_hoursnumberNumber of billable hours client_idintegerClient identifier client_namestringClient name currencystringCurrency code project_idintegerProject identifier project_namestringProject name total_hoursnumberTotal hours spent
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billable_amountnumberTotal billable amount data[].billable_hoursnumberNumber of billable hours data[].client_idintegerClient identifier data[].client_namestringClient name data[].currencystringCurrency code data[].project_idintegerProject identifier data[].project_namestringProject name data[].total_hoursnumberTotal hours spent
Time Tasks
Time Tasks List
Returns time report data grouped by task for a given date range
Python SDK
await harvest . time_tasks . list ( from_ = "<str>" , to = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_tasks", "action": "list", "params": { "from": "<str>", "to": "<str>" } }'
Parameters
Parameter Name Type Required Description fromstringYes Start date for the report in YYYYMMDD format tostringYes End date for the report in YYYYMMDD format per_pageintegerNo Number of records per page (max 2000)
Response Schema Records Field Name Type Description task_idnull | integertask_namenull | stringtotal_hoursnull | numberbillable_hoursnull | numbercurrencynull | stringbillable_amountnull | number
Field Name Type Description next_linknull | string
Time Tasks Search
Search and filter time tasks records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await harvest . time_tasks . search ( query = { "filter" : { "eq" : { "billable_amount" : 0.0 } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "time_tasks", "action": "search", "params": { "query": {"filter": {"eq": {"billable_amount": 0.0}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description billable_amountnumberTotal billable amount billable_hoursnumberNumber of billable hours currencystringCurrency code task_idintegerTask identifier task_namestringTask name total_hoursnumberTotal hours spent
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].billable_amountnumberTotal billable amount data[].billable_hoursnumberNumber of billable hours data[].currencystringCurrency code data[].task_idintegerTask identifier data[].task_namestringTask name data[].total_hoursnumberTotal hours spent