The CompanyCam connector lets your AI agent act in each user's CompanyCam account. Each user connects their own CompanyCam access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 119 tools.
- Tools
- 119
- What they doRead · write · destructive
- 64 · 42 · 1364 read42 write13 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the CompanyCam connection
In AgentKit > Connections, create a CompanyCam connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'companycam'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize CompanyCam:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'companycam_current_user_get',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "companycam"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize CompanyCam:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="companycam_current_user_get",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their CompanyCam credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolcompanycam_board_getGet a CompanyCam project board with its phases.Read-onlyGet Board
Get a CompanyCam project board with its phases. Returns the board's id, name, position and phases. Use companycam_boards_list to find the board ID.
Inputs
board_idstringrequired- ID of the board. Get it from companycam_boards_list. Example: 12345678
companycam_board_phase_projects_listList the projects sitting in one phase of a CompanyCam board.Read-onlyList Projects in Board Phase
List the projects sitting in one phase of a CompanyCam board. Returns each project's id, name, display_title, display_subtitle, address and customer_name. Use companycam_board_get to find phase IDs. Use companycam_board_project_move to move a project to another phase.
Inputs
board_idstringrequired- ID of the board. Get it from companycam_boards_list. Example: 12345678
phase_idstringrequired- ID of the board phase. Get it from companycam_board_get. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_boards_listList the project boards (pipelines of phases) in the CompanyCam company.Read-onlyList Boards
List the project boards (pipelines of phases) in the CompanyCam company. Returns each board's id, name, position and phases. Use this to find board and phase IDs. Use companycam_board_phase_projects_list for the projects in a phase.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_checklist_template_getGet a CompanyCam checklist template with its fields.Read-onlyGet Checklist Template
Get a CompanyCam checklist template with its fields. Returns the template's id, name, description, fields_count and fields. Use companycam_checklist_templates_list to find the template ID.
Inputs
template_idstringrequired- ID of the checklist template, from companycam_checklist_templates_list. Example: 3a9d1e
companycam_checklist_templates_listList the checklist templates available in the CompanyCam company.Read-onlyList Checklist Templates
List the checklist templates available in the CompanyCam company. Returns each template's id, name and description. Use this to find a template ID for companycam_project_checklist_create.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_checklists_listList checklists across all CompanyCam projects.Read-onlyList Checklists
List checklists across all CompanyCam projects. Returns each checklist's id, title, description, project_name, assigned_users, fields_count, fields_completed_count, outstanding_fields_count and completed_at. Use this for a company-wide view. Use companycam_project_checklists_list for one project.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 updated_sincestring- Only return checklists updated on or after this time, as an ISO 8601 timestamp. Results are then ordered oldest first. Example: 2026-01-01T00:00:00Z
companycam_current_company_getGet the CompanyCam company that the access token belongs to.Read-onlyGet Current Company
Get the CompanyCam company that the access token belongs to. Returns the company's id, name, status, address and logo URLs. Use this to identify the connected company account.
Inputs
This tool takes no inputs.
companycam_current_user_getGet the CompanyCam user that owns the access token.Read-onlyGet Current User
Get the CompanyCam user that owns the access token. Returns the user's id, first_name, last_name, email_address, phone_number, user_role, status and profile_image. Use this to check who the connection acts as. Use companycam_user_get for another user.
Inputs
This tool takes no inputs.
companycam_custom_field_definitions_listList the custom field definitions in the CompanyCam company, ordered by name.Read-onlyList Custom Field Definitions
List the custom field definitions in the CompanyCam company, ordered by name. Returns each definition's id, key, name, type, options, currency and applies_to. Use this to learn the keys and types before calling companycam_project_custom_field_set.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_customer_contacts_listList the contacts for a CompanyCam customer.Read-onlyList Customer Contacts
List the contacts for a CompanyCam customer. Returns each contact's id, name, first_name, last_name, email, phone_number, role and notes. Use this to find a contact ID.
Inputs
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_customer_getGet a single CompanyCam customer by ID.Read-onlyGet Customer
Get a single CompanyCam customer by ID. Returns the customer's id, name, is_company, email, phone_number, notes, source, address and contacts. Use companycam_customers_list to find the customer ID.
Inputs
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
companycam_customers_listList customers in the CompanyCam company, optionally matching a search query.Read-onlyList Customers
List customers in the CompanyCam company, optionally matching a search query. Returns each customer's id, name, is_company, email, phone_number, address and contacts. Use this to find a customer ID. Use companycam_customer_get for one customer.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
qstring- Search text matched against customers. Example: Smith
companycam_document_folder_getGet a single CompanyCam document folder.Read-onlyGet Document Folder
Get a single CompanyCam document folder. Returns the folder's id, name, project_id, items_count and creator_name. Use companycam_document_folders_list to find the folder ID.
Inputs
folder_idstringrequired- ID of the document folder. Get it from companycam_document_folders_list. Example: 12345678
companycam_document_folders_listList document folders, optionally only those in one CompanyCam project.Read-onlyList Document Folders
List document folders, optionally only those in one CompanyCam project. Returns each folder's id, name, project_id, items_count and creator_name. Use this to find a folder ID before uploading or moving documents.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
project_idstring- Only return folders in this project (from companycam_projects_list). Example: 12345678
companycam_document_getGet a single CompanyCam document by ID, including its download URL.Read-onlyGet Document
Get a single CompanyCam document by ID, including its download URL. Returns the document's id, name, content_type, byte_size, url, folder_id, project_id and creator_name. Use companycam_project_documents_list to find the document ID.
Inputs
document_idstringrequired- ID of the document. Get it from companycam_project_documents_list. Example: 12345678
companycam_documents_listList documents across all CompanyCam projects.Read-onlyList Documents
List documents across all CompanyCam projects. Returns each document's id, name, content_type, byte_size, url, folder_id, project_id and creator_name. Use this to browse every document. Use companycam_project_documents_list for one project.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_group_getGet a single CompanyCam user group with its members.Read-onlyGet User Group
Get a single CompanyCam user group with its members. Returns the group's id, name, status, users and group_url. Use companycam_groups_list to find the group ID.
Inputs
group_idstringrequired- ID of the user group. Get it from companycam_groups_list. Example: 12345678
companycam_groups_listList the user groups (crews or teams) in the CompanyCam company.Read-onlyList User Groups
List the user groups (crews or teams) in the CompanyCam company. Returns each group's id, name, status, users and group_url. Use this to find group IDs for photo filters. Use companycam_project_groups_list for groups of projects.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_invoice_getGet a single CompanyCam invoice with its line items.Read-onlyGet Invoice
Get a single CompanyCam invoice with its line items. Returns the invoice's id, identifier, status, displayable_status, invoice_type, contact details, subtotal_in_cents, tax_amount_in_cents, amount_due_in_cents, issue_date, due_date and line_items. Use companycam_invoices_list to find the invoice ID.
Inputs
invoice_idstringrequired- ID of the invoice. Get it from companycam_invoices_list. Example: 12345678
companycam_invoice_line_items_listList the line items on a CompanyCam invoice.Read-onlyList Invoice Line Items
List the line items on a CompanyCam invoice. Returns each line item's id, name, description, quantity, unit_type, unit_cost_in_cents, customer_unit_price_in_cents, markup and subtotal_in_cents. Use companycam_invoice_get for the invoice totals.
Inputs
invoice_idstringrequired- ID of the invoice. Get it from companycam_invoices_list. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_invoices_listList CompanyCam Sales Suite invoices, newest first, optionally for one project or changed since a time.Read-onlyList Invoices
List CompanyCam Sales Suite invoices, newest first, optionally for one project or changed since a time. Returns each invoice's id, identifier, status, displayable_status, contact details, amount_due_in_cents, issue_date, due_date and line_items. Use companycam_invoice_get for one invoice.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idstring- Only return invoices for this project. Example: 12345678
updated_sincestring- Only return invoices updated on or after this time, as an ISO 8601 timestamp. Results are then ordered oldest first. Example: 2026-01-01T00:00:00Z
companycam_labels_listList every project label defined in the CompanyCam company.Read-onlyList Labels
List every project label defined in the CompanyCam company. Returns each label's id, display_value, value and tag_type. Use this to see available labels. Use companycam_project_labels_list for one project's labels.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_page_getGet a single CompanyCam page with its content.Read-onlyGet Page
Get a single CompanyCam page with its content. Returns the page's id, project_id, type, title, draft, shared, share_url, raw_content and tiptap_content. Use companycam_project_pages_list to find the page ID.
Inputs
page_idstringrequired- ID of the page. Get it from companycam_project_pages_list. Example: 12345678
companycam_pages_listList pages (reports and notes built in CompanyCam) across projects, optionally for one project.Read-onlyList Pages
List pages (reports and notes built in CompanyCam) across projects, optionally for one project. Returns each page's id, project_id, type, title, draft, shared, share_url, creator and content. Use this to browse pages company-wide. Use companycam_project_pages_list for one project.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idstring- Only return pages in this project (from companycam_projects_list). Example: 12345678
companycam_photo_comments_listList the comments on a CompanyCam photo.Read-onlyList Photo Comments
List the comments on a CompanyCam photo. Returns each comment's id, content, creator_name, status and created_at. Use this for photo comments. Use companycam_project_comments_list for comments on the project itself.
Inputs
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_photo_getGet a single CompanyCam photo by ID.Read-onlyGet Photo
Get a single CompanyCam photo by ID. Returns the photo's id, project_id, creator_name, captured_at, coordinates, uris (image sizes), photo_url, description, internal flag, comments, tags and annotations. Use this when you already have a photo ID. Use companycam_project_photos_list to find photos in a project.
Inputs
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
companycam_photos_listList photos across all CompanyCam projects, newest captured first, filtered by date range, project, user, group or tag.Read-onlyList Photos
List photos across all CompanyCam projects, newest captured first, filtered by date range, project, user, group or tag. Returns each photo's id, project_id, creator_name, captured_at, coordinates, uris (image sizes), photo_url, description, internal flag, comment_count and processing_status. Includes meta.next_cursor for paging. Use this to search photos company-wide. Use companycam_project_photos_list for one project's photos.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
beforestring- Pagination cursor for the previous page. Pass meta.prev_cursor from a response; do not combine with after.
end_datestring- Only return media captured on or before this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
group_idsarray- Only return records matching one of these user group IDs (from companycam_groups_list). Sent as repeated query parameters. Example: ["123", "456"]
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idsarray- Only return records matching one of these project IDs (from companycam_projects_list). Sent as repeated query parameters. Example: ["123", "456"]
start_datestring- Only return media captured on or after this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
tag_idsarray- Only return records matching one of these tag IDs (from companycam_tags_list). Sent as repeated query parameters. Example: ["123", "456"]
user_idsarray- Only return records matching one of these user (photographer) IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
companycam_price_book_item_getGet a single CompanyCam price book item.Read-onlyGet Price Book Item
Get a single CompanyCam price book item. Returns the item's id, name, description, unit_type, tax_exempt, unit_cost_in_cents, customer_unit_price_in_cents and markup. Use companycam_price_book_items_list to find the item ID.
Inputs
price_book_item_idstringrequired- ID of the price book item. Get it from companycam_price_book_items_list. Example: 12345678
companycam_price_book_items_listList items in the CompanyCam Sales Suite price book, optionally matching a search query.Read-onlyList Price Book Items
List items in the CompanyCam Sales Suite price book, optionally matching a search query. Returns each item's id, name, description, unit_type, tax_exempt, unit_cost_in_cents, customer_unit_price_in_cents and markup. Use this to find a price_book_item_id for proposal line items.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
qstring- Search text matched against price book items. Example: shingle
companycam_project_assigned_users_listList the users assigned to a CompanyCam project.Read-onlyList Project Assigned Users
List the users assigned to a CompanyCam project. Returns each user's id, first_name, last_name, email_address, phone_number, user_role and status. Use this to see who is on a job. Use companycam_project_user_assign to add someone.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_project_checklist_getGet a checklist on a CompanyCam project with its currently visible questions and answers.Read-onlyGet Project Checklist
Get a checklist on a CompanyCam project with its currently visible questions and answers. Returns the checklist's id, title, description, assigned_users, completion counts and fields (each with id, title, field_type, field_response and completed). Use this before companycam_project_checklist_fields_update to get field IDs.
Inputs
checklist_idstringrequired- ID of the project checklist, from companycam_project_checklists_list. Example: 8f3c2a
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_checklists_listList the checklists on a CompanyCam project.Read-onlyList Project Checklists
List the checklists on a CompanyCam project. Returns each checklist's id, title, description, project_name, assigned_users, fields_count, fields_completed_count, outstanding_fields_count and completed_at. Use companycam_project_checklist_get to read a checklist's questions and answers.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_collaborators_listList outside collaborators (people from other companies) who have access to a CompanyCam project.Read-onlyList Project Collaborators
List outside collaborators (people from other companies) who have access to a CompanyCam project. Returns each collaborator's id, project_invitation_id, permissions and accepted_at. Use this to audit outside access. Use companycam_project_assigned_users_list for your own users.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_comments_listList the comments posted on a CompanyCam project.Read-onlyList Project Comments
List the comments posted on a CompanyCam project. Returns each comment's id, content, creator_name, status and created_at. Use this for project-level comments. Use companycam_photo_comments_list for comments on a photo.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_custom_fields_listList every custom field defined for projects together with this project's value for each (unset fields read as null).Read-onlyList Project Custom Fields
List every custom field defined for projects together with this project's value for each (unset fields read as null). Returns each field's key, name, type, value and currency. Use companycam_project_custom_field_set to set a value by its key.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_project_customer_getGet the customer linked to a CompanyCam project.Read-onlyGet Project Customer
Get the customer linked to a CompanyCam project. Returns the customer's id, name, is_company, email, phone_number, notes, source, address and contacts. Use companycam_project_customer_set to link a different customer.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_documents_listList the documents (files) attached to a CompanyCam project.Read-onlyList Project Documents
List the documents (files) attached to a CompanyCam project. Returns each document's id, name, content_type, byte_size, url, folder_id, project_id and creator_name. Use this for one project. Use companycam_documents_list to list documents across projects.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_getGet a single CompanyCam project by ID.Read-onlyGet Project
Get a single CompanyCam project by ID. Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. With include set to custom_fields, also returns the project's custom field values. Use this when you already have a project ID. Use companycam_projects_search to find one by name.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
includestring- Set to custom_fields to embed the project's custom field values in the response. Needs the custom_fields:read permission on the token; without it the key is left out rather than the call failing.one of
custom_fields
companycam_project_group_getGet a single CompanyCam project group.Read-onlyGet Project Group
Get a single CompanyCam project group. Returns the group's id, name, description, status and project_count. Use companycam_project_group_projects_list to see its projects.
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
companycam_project_group_projects_listList the projects in a CompanyCam project group.Read-onlyList Projects in Group
List the projects in a CompanyCam project group. Returns each project's id, name, status, address, photo_count and project_url, plus pagination cursors. Use companycam_project_group_project_add to add a project to the group.
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_groups_listList project groups (collections of related projects) in the CompanyCam company.Read-onlyList Project Groups
List project groups (collections of related projects) in the CompanyCam company. Returns each group's id, name, description, status and project_count. Use this for groups of projects. Use companycam_groups_list for groups of users.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_project_invitations_listList collaboration invitations created for a CompanyCam project.Read-onlyList Project Invitations
List collaboration invitations created for a CompanyCam project. Returns each invitation's id, status, creator_name, accepted_at, accepted_by_id and expires_at. Use companycam_project_invitation_create to create a new invitation link.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_labels_listList the labels applied to a CompanyCam project.Read-onlyList Project Labels
List the labels applied to a CompanyCam project. Returns each label's id, display_value, value and tag_type. Use this for one project's labels. Use companycam_labels_list for every label in the company.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_pages_listList the pages in a CompanyCam project.Read-onlyList Project Pages
List the pages in a CompanyCam project. Returns each page's id, type, title, draft, shared, share_url, creator and last_edited_by. Use companycam_page_get for a page's full content.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_project_photos_listList the photos in one CompanyCam project, filtered by date range, user, group or tag.Read-onlyList Project Photos
List the photos in one CompanyCam project, filtered by date range, user, group or tag. Returns each photo's id, project_id, creator_name, captured_at, coordinates, uris (image sizes), photo_url, description, internal flag, comment_count and processing_status. Includes meta.next_cursor for paging. Use this for a single project. Use companycam_photos_list to search across projects.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
beforestring- Pagination cursor for the previous page. Pass meta.prev_cursor from a response; do not combine with after.
end_datestring- Only return media captured on or before this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
group_idsarray- Only return records matching one of these user group IDs (from companycam_groups_list). Sent as repeated query parameters. Example: ["123", "456"]
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 start_datestring- Only return media captured on or after this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
tag_idsarray- Only return records matching one of these tag IDs (from companycam_tags_list). Sent as repeated query parameters. Example: ["123", "456"]
user_idsarray- Only return records matching one of these user (photographer) IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
companycam_project_task_getGet a single task on a CompanyCam project.Read-onlyGet Project Task
Get a single task on a CompanyCam project. Returns the task's id, details, status, completed flag, position, assigned_users, photos, videos and completed_at. Use companycam_project_tasks_list to find the task ID.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
task_idstringrequired- ID of the project task. Get it from companycam_project_tasks_list. Example: 12345678
companycam_project_tasks_listList the tasks (to-dos) on a CompanyCam project.Read-onlyList Project Tasks
List the tasks (to-dos) on a CompanyCam project. Returns each task's id, details, status, completed flag, position, assigned_users, photos, videos and completed_at. Use this to review a project's to-do list. Use companycam_project_task_get for one task.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_project_videos_listList the videos captured in one CompanyCam project.Read-onlyList Project Videos
List the videos captured in one CompanyCam project. Returns each video's id, project_id, creator_name, status, playback_url, format, thumbnail_urls, duration and captured_at. Use this for a single project. Use companycam_videos_list to search across projects.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_projects_listList projects in the CompanyCam company, most recently active first, with cursor pagination.Read-onlyList Projects
List projects in the CompanyCam company, most recently active first, with cursor pagination. Returns each project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, labels, customer_id and project_url, plus meta.next_cursor. Use this to browse or filter projects by assigned user or customer. Use companycam_projects_search to find projects by name or address text.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
assigned_user_idsarray- Only return records matching one of these assigned user IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
customer_idstring- Only return projects linked to this customer ID (from companycam_customers_list). Example: 9876543
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_projects_searchSearch CompanyCam projects by a text query that matches project names and addresses.Read-onlySearch Projects
Search CompanyCam projects by a text query that matches project names and addresses. Returns matching projects with id, name, status, address, primary_contact, photo_count and project_url, plus pagination cursors in meta. Use this when you know part of a project's name or address. Use companycam_projects_list to browse or filter by user or customer.
Inputs
querystringrequired- Text to search for in project names and addresses. Example: Maple Street
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_proposal_getGet a single CompanyCam proposal with its line items.Read-onlyGet Proposal
Get a single CompanyCam proposal with its line items. Returns the proposal's id, title, identifier, current_status, contact details, tax and deposit amounts, total_price_in_cents, scope_original and line_items. Use companycam_proposals_list to find the proposal ID.
Inputs
proposal_idstringrequired- ID of the proposal. Get it from companycam_proposals_list. Example: 12345678
companycam_proposal_line_items_listList the line items on a CompanyCam proposal.Read-onlyList Proposal Line Items
List the line items on a CompanyCam proposal. Returns each line item's id, name, description, quantity, unit_type, unit_cost_in_cents, customer_unit_price_in_cents, markup and subtotal_in_cents. Use companycam_proposal_line_item_create to add one.
Inputs
proposal_idstringrequired- ID of the proposal. Get it from companycam_proposals_list. Example: 12345678
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
companycam_proposals_listList CompanyCam Sales Suite proposals, newest first, optionally for one project or changed since a time.Read-onlyList Proposals
List CompanyCam Sales Suite proposals, newest first, optionally for one project or changed since a time. Returns each proposal's id, title, identifier, current_status, contact details, total_price_in_cents, accepted_at and line_items. Use companycam_proposal_get for one proposal.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idstring- Only return proposals for this project. Example: 12345678
updated_sincestring- Only return proposals updated on or after this time, as an ISO 8601 timestamp. Results are then ordered oldest first. Example: 2026-01-01T00:00:00Z
companycam_tag_getGet a single CompanyCam photo tag by ID.Read-onlyGet Tag
Get a single CompanyCam photo tag by ID. Returns the tag's id, display_value, value, tag_type and timestamps. Use companycam_tags_list to find a tag ID.
Inputs
tag_idstringrequired- ID of the tag. Get it from companycam_tags_list. Example: 12345678
companycam_time_entries_listList clock-in/clock-out time entries from CompanyCam Time Tracking, filtered by date range, project or user.Read-onlyList Time Entries
List clock-in/clock-out time entries from CompanyCam Time Tracking, filtered by date range, project or user. Returns each entry's id, user_name, project_name, clock_in_at, clock_out_at, duration_hours, note, entry_type, flagged and active. Use this for individual entries. Use companycam_time_entries_summary for totals.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
end_datestring- Only include time entries on or before this date, formatted YYYY-MM-DD. Example: 2026-10-01
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idsarray- Only return records matching one of these project IDs (from companycam_projects_list). Sent as repeated query parameters. Example: ["123", "456"]
start_datestring- Only include time entries on or after this date, formatted YYYY-MM-DD. Example: 2026-10-01
time_zonestring- IANA time zone used to interpret the dates. Example: America/Chicago
user_idsarray- Only return records matching one of these user IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
companycam_time_entries_summaryTotal completed CompanyCam time entries by user, date or project over a date range.Read-onlySummarize Time Entries
Total completed CompanyCam time entries by user, date or project over a date range. Open (still clocked-in) entries are counted separately, not in totals. Returns rows with user, project or date and total_hours, plus meta totals, open_entry_count and a truncated flag (rows cap at 5,000). Use this for payroll or job-costing totals. Use companycam_time_entries_list for individual entries.
Inputs
end_datestring- Only include time entries on or before this date, formatted YYYY-MM-DD. Example: 2026-10-01
group_bystring- Dimension to total by: user, date or project. Example: userone of
userdateproject project_idsarray- Only return records matching one of these project IDs (from companycam_projects_list). Sent as repeated query parameters. Example: ["123", "456"]
start_datestring- Only include time entries on or after this date, formatted YYYY-MM-DD. Example: 2026-10-01
time_zonestring- IANA time zone used to interpret the dates. Example: America/Chicago
user_idsarray- Only return records matching one of these user IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
companycam_time_entry_getGet a single CompanyCam time entry.Read-onlyGet Time Entry
Get a single CompanyCam time entry. Returns the entry's id, user_name, project_name, clock_in_at, clock_out_at, duration_seconds, duration_hours, note, source, entry_type and flagged. Use companycam_time_entries_list to find the entry ID.
Inputs
time_entry_idstringrequired- ID of the time entry. Get it from companycam_time_entries_list. Example: 12345678
companycam_user_getGet a single CompanyCam user by ID.Read-onlyGet User
Get a single CompanyCam user by ID. Returns the user's id, first_name, last_name, email_address, phone_number, user_role, status and profile_image. Use companycam_users_list to find the user ID.
Inputs
user_idstringrequired- ID of the user. Get it from companycam_users_list. Example: 12345678
companycam_users_listList the users in the CompanyCam company.Read-onlyList Users
List the users in the CompanyCam company. Returns each user's id, first_name, last_name, email_address, phone_number, user_role and status. Use this to find user IDs for assignments and filters. Use companycam_user_get for one user.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50
companycam_video_getGet a single CompanyCam video by ID.Read-onlyGet Video
Get a single CompanyCam video by ID. Returns the video's id, project_id, status, playback_url, format, thumbnail_urls, duration, captured_at and transcript. Use companycam_project_videos_list to find the video ID.
Inputs
video_idstringrequired- ID of the video. Get it from companycam_project_videos_list. Example: 12345678
companycam_videos_listList videos across all CompanyCam projects, newest captured first, filtered by date range, project, user, group or tag.Read-onlyList Videos
List videos across all CompanyCam projects, newest captured first, filtered by date range, project, user, group or tag. Returns each video's id, project_id, creator_name, status, playback_url, format, thumbnail_urls, duration and captured_at. Until a video's status is processed, playback_url is the raw upload URL. Use this to search videos company-wide. Use companycam_project_videos_list for one project.
Inputs
afterstring- Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page; omit for the first page.
beforestring- Pagination cursor for the previous page. Pass meta.prev_cursor from a response; do not combine with after.
end_datestring- Only return media captured on or before this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
group_idsarray- Only return records matching one of these user group IDs (from companycam_groups_list). Sent as repeated query parameters. Example: ["123", "456"]
limitinteger- Maximum number of records per page, 1 to 100. Defaults to 50; values above 100 are clamped to 100.default
50 project_idsarray- Only return records matching one of these project IDs (from companycam_projects_list). Sent as repeated query parameters. Example: ["123", "456"]
start_datestring- Only return media captured on or after this time, as a Unix timestamp in seconds. Example: 1735689600 (2025-01-01T00:00:00Z)
tag_idsarray- Only return records matching one of these tag IDs (from companycam_tags_list). Sent as repeated query parameters. Example: ["123", "456"]
user_idsarray- Only return records matching one of these user (photographer) IDs (from companycam_users_list). Sent as repeated query parameters. Example: ["123", "456"]
companycam_board_project_moveMove a project to a phase on a CompanyCam board.WriteMove Project to Board Phase
Move a project to a phase on a CompanyCam board. Returns the project_id, board_id, phase_id and tag_id after the move. Use companycam_board_get to find phase IDs.
Inputs
board_idstringrequired- ID of the board. Get it from companycam_boards_list. Example: 12345678
phase_idstringrequired- ID of the destination phase, from companycam_board_get. Example: 4455
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_customer_contact_createAdd a contact to a CompanyCam customer.WriteAdd Customer Contact
Add a contact to a CompanyCam customer. Returns the contact's id, name, first_name, last_name, email, phone_number, role and notes. Use companycam_customer_contact_update to edit an existing contact.
Inputs
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
emailstring- Contact email. Example: bob@example.com
first_namestring- Contact first name. Example: Bob
last_namestring- Contact last name. Example: Smith
namestring- Full name, if you are not sending first and last name. Example: Bob Smith
notesstring- Notes about the contact. Example: Available after 5pm
phone_numberstring- Contact phone number. Example: 402-555-0101
rolestring- Contact's role, for example Spouse or Property Manager. Example: Property Manager
companycam_customer_contact_updateUpdate a CompanyCam customer contact's first and last name.WriteUpdate Customer Contact
Update a CompanyCam customer contact's first and last name. Returns the contact's id, name, first_name, last_name, email, phone_number, role and notes. Use companycam_customer_contacts_list to find the contact ID.
- Idempotent
Inputs
contact_idstringrequired- ID of the contact. Get it from companycam_customer_contacts_list. Example: 12345678
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
first_namestringrequired- Contact first name. Example: Robert
last_namestringrequired- Contact last name. Example: Smith
companycam_customer_createCreate a customer (a person or company) in CompanyCam, with optional contact details, address and contacts.WriteCreate Customer
Create a customer (a person or company) in CompanyCam, with optional contact details, address and contacts. Returns the customer's id, name, is_company, email, phone_number, notes, source, address and contacts. Use companycam_project_customer_set to link the customer to a project afterwards.
Inputs
namestringrequired- Customer name. Example: Jane Smith
addressobject- Customer mailing address; when sent it needs street_address_1, city and state. Example: {"street_address_1": "4132 Pleasant St", "city": "Lincoln", "state": "NE"}
contactsarray- Contacts to create with the customer; each needs a name and may have an email. Example: [{"name": "Bob Smith", "email": "bob@example.com"}]
emailstring- Customer email. Example: jane@example.com
is_companyboolean- true if the customer is a business rather than a person. Example: false
notesstring- Free-text notes about the customer. Example: Prefers text messages
phone_numberstring- Customer phone number. Example: 402-555-0100
companycam_customer_updateUpdate a CompanyCam customer's name, notes or address.WriteUpdate Customer
Update a CompanyCam customer's name, notes or address. Only the fields you send change. Returns the customer's id, name, is_company, email, phone_number, notes, source, address and contacts. Use companycam_customer_contact_update to edit one of the customer's contacts.
- Idempotent
Inputs
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
addressobject- Address fields to change, such as city and postal_code; fields you leave out are kept. Example: {"city": "Omaha", "postal_code": "68102"}
namestring- New customer name. Example: Jane Smith-Jones
notesstring- New notes. Example: Gate code 1234
companycam_document_folder_updateRename a CompanyCam document folder.WriteRename Document Folder
Rename a CompanyCam document folder. Returns the folder's id, name, project_id, items_count and creator_name. Use companycam_document_folders_list to find the folder ID.
- Idempotent
Inputs
folder_idstringrequired- ID of the document folder. Get it from companycam_document_folders_list. Example: 12345678
namestringrequired- New folder name. Example: Permits and Inspections
companycam_invoice_createCreate a draft CompanyCam Sales Suite invoice for a project, optionally linked to a proposal.WriteCreate Invoice
Create a draft CompanyCam Sales Suite invoice for a project, optionally linked to a proposal. Returns the invoice's id, identifier, status, displayable_status, invoice_type, contact details, subtotal_in_cents, tax_amount_in_cents, amount_due_in_cents, issue_date, due_date and line_items. Use companycam_invoice_update to change it while it is still editable.
Inputs
project_idstringrequired- ID of the project to invoice. Example: 12345678
contact_address_line_1string- Billing address line 1. Example: 4132 Pleasant St
contact_address_line_2string- Billing address line 2. Example: Suite 200
contact_citystring- Billing city. Example: Lincoln
contact_emailstring- Billing contact email. Example: jane@example.com
contact_namestring- Billing contact name. Example: Jane Smith
contact_phone_numberstring- Billing contact phone. Example: 402-555-0100
contact_postal_codestring- Billing postal code. Example: 68508
contact_statestring- Billing state. Example: NE
customer_messagestring- Message shown to the customer. Example: Thank you for your business!
due_datestring- Due date, YYYY-MM-DD. Example: 2026-11-14
identifierstring- Invoice number shown to the customer. Example: INV-1042
is_payment_ach_enabledboolean- true to allow ACH bank payment. Example: true
is_payment_card_enabledboolean- true to allow card payment. Example: true
is_payment_offline_enabledboolean- true to allow offline payment (cash or check). Example: false
issue_datestring- Issue date, YYYY-MM-DD. Example: 2026-10-15
memostring- Internal memo. Example: Net 30 per contract
proposal_idstring- ID of an accepted proposal to invoice against, from companycam_proposals_list. Example: 334455
tax_percentagenumber- Tax rate as a percentage. Example: 7.25
companycam_invoice_updateUpdate an editable CompanyCam invoice's contact, dates, tax, messages or payment options.WriteUpdate Invoice
Update an editable CompanyCam invoice's contact, dates, tax, messages or payment options. Only the fields you send change. Returns the invoice's id, identifier, status, displayable_status, invoice_type, contact details, subtotal_in_cents, tax_amount_in_cents, amount_due_in_cents, issue_date, due_date and line_items. Use companycam_invoice_get to read the current values first.
- Idempotent
Inputs
invoice_idstringrequired- ID of the invoice. Get it from companycam_invoices_list. Example: 12345678
contact_address_line_1string- Billing address line 1. Example: 4132 Pleasant St
contact_address_line_2string- Billing address line 2. Example: Suite 200
contact_citystring- Billing city. Example: Lincoln
contact_emailstring- Billing contact email. Example: jane@example.com
contact_namestring- Billing contact name. Example: Jane Smith
contact_phone_numberstring- Billing contact phone. Example: 402-555-0100
contact_postal_codestring- Billing postal code. Example: 68508
contact_statestring- Billing state. Example: NE
customer_messagestring- Message shown to the customer. Example: Thank you for your business!
due_datestring- Due date, YYYY-MM-DD. Example: 2026-11-14
identifierstring- Invoice number shown to the customer. Example: INV-1042
is_payment_ach_enabledboolean- true to allow ACH bank payment. Example: true
is_payment_card_enabledboolean- true to allow card payment. Example: true
is_payment_offline_enabledboolean- true to allow offline payment (cash or check). Example: false
issue_datestring- Issue date, YYYY-MM-DD. Example: 2026-10-15
memostring- Internal memo. Example: Net 30 per contract
tax_percentagenumber- Tax rate as a percentage. Example: 7.25
companycam_page_updateUpdate a CompanyCam page's title, draft flag or TipTap content.WriteUpdate Page
Update a CompanyCam page's title, draft flag or TipTap content. Returns the page's id, project_id, type, title, draft, shared, share_url, creator, last_edited_by and folder_id. Use companycam_page_get to read the current content first.
- Idempotent
Inputs
page_idstringrequired- ID of the page. Get it from companycam_project_pages_list. Example: 12345678
draftboolean- true to keep the page a draft, false to publish it. Example: false
tiptap_contentobject- Replacement page body as a TipTap document object. Example: {"type": "doc", "content": [{"type": "section", "attrs": {"sectionType": "text"}, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Roof inspection summary"}]}]}]}
titlestring- New page title. Example: Final Roof Inspection Report
companycam_photo_comment_createAdd a comment to a CompanyCam photo as the token's user.WriteAdd Photo Comment
Add a comment to a CompanyCam photo as the token's user. Returns the new comment's id, content, creator_name and created_at. Use this to comment on a photo. Use companycam_project_comment_create to comment on a project.
Inputs
contentstringrequired- Comment text. Example: Please re-shoot this from the ladder.
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
companycam_photo_description_setSet or replace the description (caption) on a CompanyCam photo.WriteSet Photo Description
Set or replace the description (caption) on a CompanyCam photo. HTML is sanitized before saving. Returns the updated photo's id, description, uris, captured_at and project_id. Use this to caption a photo. Use companycam_photo_comment_create to add a discussion comment instead.
Inputs
contentstringrequired- Description text for the photo. Example: Water damage under the north valley
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
companycam_photo_updateMark a CompanyCam photo as internal (hidden from shared and public views) or not.WriteUpdate Photo Visibility
Mark a CompanyCam photo as internal (hidden from shared and public views) or not. Returns the updated photo's id, internal flag, description, uris and captured_at. Use this to change a photo's internal flag. Use companycam_photo_description_set to change its description.
- Idempotent
Inputs
internalbooleanrequired- true to mark the photo internal-only, false to make it visible in shared views. Example: true
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
companycam_project_archiveArchive a CompanyCam project so it drops out of active project lists.WriteArchive Project
Archive a CompanyCam project so it drops out of active project lists. The project and its photos are kept. Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. Use companycam_project_unarchive to bring it back. Use companycam_project_delete to remove a project instead.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_checklist_createAdd a checklist to a CompanyCam project from a checklist template, optionally assigning users.WriteCreate Checklist from Template
Add a checklist to a CompanyCam project from a checklist template, optionally assigning users. Returns a job_id and the new checklist with its id, title and fields. Use companycam_checklist_templates_list to find the template ID.
Inputs
checklist_template_idstringrequired- ID of the checklist template, from companycam_checklist_templates_list. Example: 3a9d1e
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
assignee_idsarray- User IDs to assign to the new checklist; IDs outside the company are ignored. Example: ["1234567"]
companycam_project_checklist_details_updateChange the title or description of a checklist on a CompanyCam project.WriteUpdate Checklist Details
Change the title or description of a checklist on a CompanyCam project. Returns the checklist's id, title, description and completion counts. Use companycam_project_checklist_fields_update to answer questions instead.
- Idempotent
Inputs
checklist_idstringrequired- ID of the project checklist, from companycam_project_checklists_list. Example: 8f3c2a
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
descriptionstring- New checklist description. Example: Complete before releasing the crew
titlestring- New checklist title, up to 255 characters; cannot be blank. Example: Final Walkthrough
companycam_project_checklist_fields_updateAnswer or complete fields on a CompanyCam project checklist in one batch.WriteAnswer Checklist Fields
Answer or complete fields on a CompanyCam project checklist in one batch. Last write wins, so read the checklist first to avoid overwriting someone's answer. Returns the checklist with its updated fields and completion counts. Use companycam_project_checklist_get to get field IDs. Use companycam_project_checklist_details_update to change the title or description.
- Idempotent
Inputs
checklist_idstringrequired- ID of the project checklist, from companycam_project_checklists_list. Example: 8f3c2a
fieldsarrayrequired- Fields to update. Each entry needs the field id plus field_response (an object with value) and/or completed (true/false). Example: [{"id": "f1", "field_response": {"value": "Yes"}, "completed": true}]
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_comment_createAdd a comment to a CompanyCam project as the token's user.WriteAdd Project Comment
Add a comment to a CompanyCam project as the token's user. Returns the new comment's id, content, creator_name and created_at. Use this for project-level notes to the crew. Use companycam_photo_comment_create to comment on a photo.
Inputs
contentstringrequired- Comment text. Example: Dumpster arrives Tuesday at 8am.
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_createCreate a CompanyCam project at a street address.WriteCreate Project
Create a CompanyCam project at a street address. If a project with the same name and address already exists, CompanyCam returns that project instead (and does not apply a template). Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. Use this to start a new job. Use companycam_project_update to change an existing project.
Inputs
citystringrequired- City of the job site. Example: Lincoln
countrystringrequired- Country code of the job site. Example: US
namestringrequired- Project name, usually the job or customer name. Example: Smith Roof Replacement
postal_codestringrequired- Postal or ZIP code of the job site. Example: 68508
statestringrequired- State or region of the job site. Example: NE
street_address_1stringrequired- First line of the job site street address. Example: 4132 Pleasant St
coordinatesobject- Map position of the job site as an object with lat and lon. Example: {"lat": "40.8136", "lon": "-96.7026"}
customer_idstring- ID of a customer to link to the project, from companycam_customers_list. Example: 9876543
geofencearray- Polygon around the job site as a list of points, each with lat and lon. Example: [{"lat": "40.81", "lon": "-96.70"}, {"lat": "40.82", "lon": "-96.70"}, {"lat": "40.82", "lon": "-96.71"}]
primary_contactobject- Main on-site contact for the project, with name, email and phone_number. Example: {"name": "Jane Smith", "email": "jane@example.com", "phone_number": "402-555-0100"}
project_template_idstring- ID of a project template to apply to the new project. Example: 55501
companycam_project_custom_field_setSet a project's value for one CompanyCam custom field, replacing any existing value.WriteSet Project Custom Field
Set a project's value for one CompanyCam custom field, replacing any existing value. Returns the field's key, name, type, value (cast to the field type) and currency. Use companycam_project_custom_field_clear to unset a value.
- Idempotent
Inputs
keystringrequired- Key of the custom field (not its ID), from companycam_project_custom_fields_list or companycam_custom_field_definitions_list. Example: permit_number
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
valuestringrequired- New value, matching the field's type: text; a number; true/false; a date like 2026-08-04; a timestamp with UTC offset like 2026-08-04T19:30:00Z; one of an enum field's options; a URL; or for currency a whole number of minor units (125050 = $1,250.50). Max 1000 characters. Example: P-2026-0042
companycam_project_customer_setLink a customer to a CompanyCam project, replacing any customer already linked.WriteSet Project Customer
Link a customer to a CompanyCam project, replacing any customer already linked. Returns the customer's id, name, is_company, email, phone_number, notes, source, address and contacts. Use companycam_customers_list or companycam_customer_create to get the customer ID first.
- Idempotent
Inputs
customer_idstringrequired- ID of the customer to link, from companycam_customers_list. Example: 9876543
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_description_updateReplace a CompanyCam project's description (the project notepad).WriteUpdate Project Description
Replace a CompanyCam project's description (the project notepad). Accepts plain text or basic HTML; unsupported tags are stripped and bare URLs become links. Returns the saved description. Use this for the description only. Use companycam_project_update for the name, address or contact.
- Idempotent
Inputs
descriptionstringrequired- New project description as text or basic HTML. Example: <p>Tear-off and replace 30 squares. Gate code 1234.</p>
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_document_createUpload a document to a CompanyCam project from base64-encoded file contents (30 MB limit), optionally into a folder.WriteUpload Project Document
Upload a document to a CompanyCam project from base64-encoded file contents (30 MB limit), optionally into a folder. Returns the new document's id, name, content_type, byte_size, url and folder_id. Use this for PDFs and other files. Use companycam_project_photo_create for photos.
Inputs
attachmentstringrequired- File contents encoded as base64 (30 MB limit). Example: JVBERi0xLjQK
namestringrequired- File name including extension. Example: estimate.pdf
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
folder_idstring- ID of a document folder in the project to put the file in, from companycam_document_folders_list. Example: 445566
companycam_project_document_folder_createCreate a document folder in a CompanyCam project.WriteCreate Document Folder
Create a document folder in a CompanyCam project. Returns the folder's id, name, project_id, items_count and creator_name. Use this to organize a project's documents. Use companycam_document_folder_update to rename a folder.
Inputs
namestringrequired- Folder name. Example: Permits
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_group_createCreate a project group in CompanyCam.WriteCreate Project Group
Create a project group in CompanyCam. Returns the group's id, name, description, status and project_count. Use companycam_project_group_project_add to put projects in it.
Inputs
namestringrequired- Group name. Example: Oak Ridge Subdivision
descriptionstring- Group description. Example: All lots in phase 1
companycam_project_group_project_addAdd a project to a CompanyCam project group.WriteAdd Project to Group
Add a project to a CompanyCam project group. Adding a project that is already in the group changes nothing. Returns the project's id, name, status, address and project_url. Use companycam_project_group_project_remove to take it out.
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
project_idstringrequired- ID of the project to add, from companycam_projects_list. Example: 12345678
companycam_project_group_updateUpdate a CompanyCam project group's name or description.WriteUpdate Project Group
Update a CompanyCam project group's name or description. Returns the group's id, name, description, status and project_count. Use companycam_project_groups_list to find the group ID.
- Idempotent
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
descriptionstring- New description. Example: Lots 1-24
namestring- New group name. Example: Oak Ridge Phase 1
companycam_project_invitation_createCreate a collaboration invitation link for a CompanyCam project, choosing whether the collaborator can view and add content.WriteCreate Project Invitation
Create a collaboration invitation link for a CompanyCam project, choosing whether the collaborator can view and add content. Returns the invitation's id, invite_url, status and expires_at. Share the invite_url with the outside collaborator. Use companycam_project_invitations_list to review existing invitations.
Inputs
can_add_contentbooleanrequired- Whether the collaborator can add photos and content to the project. Example: false
can_view_contentbooleanrequired- Whether the collaborator can view the project's photos and content. Example: true
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_labels_addAdd one or more labels to a CompanyCam project by name; labels that don't exist yet are created.WriteAdd Project Labels
Add one or more labels to a CompanyCam project by name; labels that don't exist yet are created. Returns the labels now on the project with id, display_value and value. Use this to label a project. Use companycam_project_label_remove to take one off.
Inputs
labelsarrayrequired- Label names to add to the project. Example: ["Insurance", "Roofing"]
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_page_createCreate a page (report or note) in a CompanyCam project, optionally with TipTap content and as a draft.WriteCreate Project Page
Create a page (report or note) in a CompanyCam project, optionally with TipTap content and as a draft. Returns the page's id, project_id, type, title, draft, shared, share_url, creator, last_edited_by and folder_id. Use companycam_page_update to edit an existing page.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
titlestringrequired- Page title. Example: Roof Inspection Report
draftboolean- true to save the page as a draft. Example: true
tiptap_contentobject- Page body as a TipTap document object: type doc with a content array of sections. Example: {"type": "doc", "content": [{"type": "section", "attrs": {"sectionType": "text"}, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Roof inspection summary"}]}]}]}
companycam_project_photo_createAdd a photo to a CompanyCam project from a publicly reachable image URL, with optional capture time, location, description and tags.WriteAdd Photo to Project
Add a photo to a CompanyCam project from a publicly reachable image URL, with optional capture time, location, description and tags. Returns the new photo's id, project_id, uris, photo_url, captured_at, description and processing_status. Use this to attach an existing image to a job. Use companycam_project_document_create for files that are not photos.
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
uristringrequired- Publicly reachable URL of the image file to import. Example: https://example.com/images/roof-north.jpg
captured_atinteger- When the photo was taken, as a Unix timestamp in seconds. Example: 1735689600
coordinatesobject- Where the photo was taken, as an object with lat and lon. Example: {"lat": "40.8136", "lon": "-96.7026"}
descriptionstring- Caption or description for the photo. Example: North slope before tear-off
tagsarray- Tag names to apply to the photo; tags that don't exist yet are created. Example: ["before", "roof"]
companycam_project_restoreRestore a soft-deleted CompanyCam project.WriteRestore Project
Restore a soft-deleted CompanyCam project. Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. Use this to undo companycam_project_delete. Use companycam_project_unarchive for an archived project.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_task_createCreate a task (to-do) on a CompanyCam project, optionally assigned to users or created already completed.WriteCreate Project Task
Create a task (to-do) on a CompanyCam project, optionally assigned to users or created already completed. Returns the task's id, details, status, completed flag, position, assigned_users, photos, videos and completed_at. Use this to add a to-do. Use companycam_project_task_update to change or complete an existing task.
Inputs
detailsstringrequired- What needs to be done. Example: Photograph all four roof slopes
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
assignee_idsarray- User IDs to assign to the task, from companycam_users_list. Example: ["1234567"]
statusstring- Set to completed to create the task already completed; omit to create an open task. Example: completed
companycam_project_task_updateUpdate a task on a CompanyCam project: change its text or status, and add or remove assignees.WriteUpdate Project Task
Update a task on a CompanyCam project: change its text or status, and add or remove assignees. Returns the task's id, details, status, completed flag, position, assigned_users, photos, videos and completed_at. Use this to edit or complete a task. Use companycam_project_task_create for a new task.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
task_idstringrequired- ID of the project task. Get it from companycam_project_tasks_list. Example: 12345678
add_assignee_idsarray- User IDs to add as assignees, from companycam_users_list. Example: ["1234567"]
detailsstring- New task text. Example: Photograph all four roof slopes and gutters
remove_assignee_idsarray- User IDs to remove from the task's assignees. Example: ["7654321"]
statusstring- New task status, for example completed to mark it done. Example: completed
companycam_project_unarchiveUnarchive a previously archived CompanyCam project so it is active again.WriteUnarchive Project
Unarchive a previously archived CompanyCam project so it is active again. Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. Use this to undo companycam_project_archive. Use companycam_project_restore for a deleted project.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_updateUpdate a CompanyCam project's name, street address, city, state or primary contact.WriteUpdate Project
Update a CompanyCam project's name, street address, city, state or primary contact. Only the fields you send are changed. Returns the project's id, name, status, archived flag, address, coordinates, primary_contact, photo_count, document_count, customer_id, description, project_url and created_at/updated_at. Use this to edit project details. Use companycam_project_description_update for the description, and companycam_project_archive or companycam_project_delete to close it out.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
citystring- New city. Example: Omaha
namestring- New project name. Example: Smith Roof Replacement - Phase 2
primary_contactobject- Replacement primary contact with name (required in the object), email and phone_number. Example: {"name": "Jane Smith", "email": "jane@example.com", "phone_number": "402-555-0100"}
statestring- New state or region. Example: NE
street_address_1string- New first line of the street address. Example: 4140 Pleasant St
companycam_project_user_assignAssign a CompanyCam user to a project.WriteAssign User to Project
Assign a CompanyCam user to a project. Returns the assigned user's id, first_name, last_name, email_address and user_role. Use companycam_users_list to find the user ID. Use companycam_project_user_unassign to remove the assignment.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
user_idstringrequired- ID of the user. Get it from companycam_users_list. Example: 12345678
companycam_proposal_createCreate a CompanyCam Sales Suite proposal for a project.WriteCreate Proposal
Create a CompanyCam Sales Suite proposal for a project. Returns the proposal's id, title, identifier, current_status, contact details, tax and deposit amounts, total_price_in_cents, scope_original and line_items. Use companycam_proposal_line_item_create to add line items afterwards.
Inputs
project_idstringrequired- ID of the project the proposal is for. Example: 12345678
contact_emailstring- Customer contact email. Example: jane@example.com
contact_namestring- Customer contact name shown on the proposal. Example: Jane Smith
deposit_amount_in_centsinteger- Required deposit in cents. Example: 50000 ($500.00)
hide_line_item_pricesboolean- true to hide individual line item prices from the customer. Example: false
scope_originalstring- Scope of work text. Example: Tear off and replace 30 squares of shingles.
tax_percentagenumber- Tax rate as a percentage. Example: 7.25
terms_and_conditionsstring- Terms and conditions text. Example: 50% due at signing.
titlestring- Proposal title. Example: Roof Replacement Proposal
companycam_proposal_line_item_createAdd a line item to a CompanyCam proposal, either one-off or from a price book item.WriteAdd Proposal Line Item
Add a line item to a CompanyCam proposal, either one-off or from a price book item. Returns the line item's id, name, quantity, unit_type, unit_cost_in_cents, customer_unit_price_in_cents, markup and subtotal_in_cents. Use companycam_price_book_items_list to find a price_book_item_id.
Inputs
proposal_idstringrequired- ID of the proposal. Get it from companycam_proposals_list. Example: 12345678
quantitynumberrequired- Quantity of the item. Example: 30
descriptionstring- Line item description. Example: GAF Timberline HDZ
namestring- Line item name. Example: Architectural shingles (per square)
positioninteger- Position of the line in the proposal (1 = first). Example: 1
price_book_item_idstring- ID of a price book item to base the line on, from companycam_price_book_items_list. Example: 778899
unit_cost_in_centsinteger- Your cost per unit in cents. Example: 9500 ($95.00)
unit_typestring- Unit of measure. Example: square
companycam_proposal_updateUpdate a CompanyCam proposal's title, contact, tax, deposit, scope or terms.WriteUpdate Proposal
Update a CompanyCam proposal's title, contact, tax, deposit, scope or terms. Only the fields you send change. Returns the proposal's id, title, identifier, current_status, contact details, tax and deposit amounts, total_price_in_cents, scope_original and line_items. Use companycam_proposal_get to read the current values first.
- Idempotent
Inputs
proposal_idstringrequired- ID of the proposal. Get it from companycam_proposals_list. Example: 12345678
contact_emailstring- Customer contact email. Example: jane@example.com
contact_namestring- Customer contact name shown on the proposal. Example: Jane Smith
deposit_amount_in_centsinteger- Required deposit in cents. Example: 50000 ($500.00)
deposit_percentagenumber- Deposit as a percentage of the total. Example: 25
identifierstring- Proposal number shown to the customer. Example: P-1042
scope_originalstring- Scope of work text. Example: Tear off and replace 30 squares of shingles.
tax_percentagenumber- Tax rate as a percentage. Example: 7.25
terms_and_conditionsstring- Terms and conditions text. Example: 50% due at signing.
titlestring- Proposal title. Example: Roof Replacement Proposal
companycam_tag_createCreate a photo tag in the CompanyCam company.WriteCreate Tag
Create a photo tag in the CompanyCam company. If a tag with the same display value exists, that tag is returned. Returns the tag's id, display_value, value and tag_type. Use this to set up a tag. Use companycam_photo_tags_add to tag a photo directly.
Inputs
display_valuestringrequired- Tag name as shown in CompanyCam. Example: Before
companycam_tag_updateRename a CompanyCam photo tag.WriteRename Tag
Rename a CompanyCam photo tag. Returns the tag's id, display_value, value and tag_type. Use companycam_tags_list to find the tag ID.
- Idempotent
Inputs
display_valuestringrequired- New tag name. Example: Before Work
tag_idstringrequired- ID of the tag. Get it from companycam_tags_list. Example: 12345678
companycam_customer_contact_deleteRemove a contact from a CompanyCam customer.DestructiveDelete Customer Contact
Remove a contact from a CompanyCam customer. Returns no content on success (HTTP 204). Use companycam_customer_contacts_list to find the contact ID.
- Idempotent
Inputs
contact_idstringrequired- ID of the contact. Get it from companycam_customer_contacts_list. Example: 12345678
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
companycam_customer_deleteDelete (soft-delete) a CompanyCam customer.DestructiveDelete Customer
Delete (soft-delete) a CompanyCam customer. Returns no content on success (HTTP 204). Use companycam_project_customer_remove to unlink a customer from one project without deleting it.
- Idempotent
Inputs
customer_idstringrequired- ID of the customer. Get it from companycam_customers_list. Example: 12345678
companycam_document_folder_deleteDelete a CompanyCam document folder.DestructiveDelete Document Folder
Delete a CompanyCam document folder. The documents and pages inside it are deleted too. Returns no content on success (HTTP 204). Use companycam_document_folders_list to find the folder ID, and check items_count first.
- Idempotent
Inputs
folder_idstringrequired- ID of the document folder. Get it from companycam_document_folders_list. Example: 12345678
companycam_photo_deleteDelete (soft-delete) a CompanyCam photo.DestructiveDelete Photo
Delete (soft-delete) a CompanyCam photo. Returns no content on success (HTTP 204). Use companycam_photo_update with internal=true to hide a photo from shared views without deleting it.
- Idempotent
Inputs
photo_idstringrequired- ID of the photo. Get it from companycam_photos_list or companycam_project_photos_list. Example: 12345678
companycam_project_custom_field_clearClear a project's value for one CompanyCam custom field.DestructiveClear Project Custom Field
Clear a project's value for one CompanyCam custom field. The field definition is kept and reads back as null. Returns no content on success (HTTP 204). Use companycam_project_custom_field_set to set a new value.
- Idempotent
Inputs
keystringrequired- Key of the custom field (not its ID), from companycam_project_custom_fields_list or companycam_custom_field_definitions_list. Example: permit_number
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_customer_removeUnlink the customer from a CompanyCam project.DestructiveRemove Project Customer
Unlink the customer from a CompanyCam project. The customer record is kept. Returns no content on success (HTTP 204). Use companycam_customer_delete to delete the customer itself.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_deleteDelete (soft-delete) a CompanyCam project.DestructiveDelete Project
Delete (soft-delete) a CompanyCam project. Returns no content on success (HTTP 204). Use companycam_project_restore to undo. Use companycam_project_archive to hide a finished project without deleting it.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_group_deleteDelete (soft-delete) a CompanyCam project group.DestructiveDelete Project Group
Delete (soft-delete) a CompanyCam project group. The projects in it are not deleted. Returns no content on success (HTTP 204). Use companycam_project_group_project_remove to take one project out instead.
- Idempotent
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
companycam_project_group_project_removeRemove a project from a CompanyCam project group.DestructiveRemove Project from Group
Remove a project from a CompanyCam project group. The project itself is untouched. Returns no content on success (HTTP 204). Use companycam_project_group_projects_list to find the project ID.
- Idempotent
Inputs
project_group_idstringrequired- ID of the project group. Get it from companycam_project_groups_list. Example: 12345678
project_idstringrequired- ID of the project. Get it from companycam_project_group_projects_list. Example: 12345678
companycam_project_label_removeRemove a label from a CompanyCam project.DestructiveRemove Project Label
Remove a label from a CompanyCam project. The label itself still exists for other projects. Returns no content on success (HTTP 204). Use companycam_project_labels_list to find the label ID first.
- Idempotent
Inputs
label_idstringrequired- ID of the label. Get it from companycam_project_labels_list. Example: 12345678
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
companycam_project_task_deleteDelete (soft-delete) a task from a CompanyCam project.DestructiveDelete Project Task
Delete (soft-delete) a task from a CompanyCam project. Returns no content on success (HTTP 204). Use companycam_project_task_update with status completed to close a task without deleting it.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
task_idstringrequired- ID of the project task. Get it from companycam_project_tasks_list. Example: 12345678
companycam_project_user_unassignRemove a user's assignment from a CompanyCam project.DestructiveUnassign User from Project
Remove a user's assignment from a CompanyCam project. The user keeps their account. Returns no content on success (HTTP 204). Use companycam_project_assigned_users_list to find assigned user IDs.
- Idempotent
Inputs
project_idstringrequired- ID of the project. Get it from companycam_projects_list or companycam_projects_search. Example: 12345678
user_idstringrequired- ID of the user. Get it from companycam_project_assigned_users_list. Example: 12345678
companycam_tag_deleteDelete a photo tag from the CompanyCam company.DestructiveDelete Tag
Delete a photo tag from the CompanyCam company. Returns no content on success (HTTP 204). Use companycam_tags_list to find the tag ID.
- Idempotent
Inputs
tag_idstringrequired- ID of the tag. Get it from companycam_tags_list. Example: 12345678
No tools match.