Access the CompanyCam API with managed OAuth authentication. Manage projects, photos, users, tags, groups, documents, and webhooks for contractor photo documentation.
Reference
Get Company
GET /companycam/v2/companyReturns the current company information.
Get Current User
GET /companycam/v2/users/currentList Users
GET /companycam/v2/usersQuery parameters:
page- Page numberper_page- Results per page (default: 25)status- Filter by status (active, inactive)
Create User
POST /companycam/v2/users
Content-Type: application/json
{
"first_name": "John",
"last_name": "Doe",
"email_address": "john@example.com",
"user_role": "standard"
}User roles: admin, standard, limited
Get User
GET /companycam/v2/users/{id}Update User
PUT /companycam/v2/users/{id}
Content-Type: application/json
{
"first_name": "John",
"last_name": "Smith"
}Delete User
DELETE /companycam/v2/users/{id}List Projects
GET /companycam/v2/projectsQuery parameters:
page- Page numberper_page- Results per page (default: 25)query- Search querystatus- Filter by statusmodified_since- Unix timestamp for filtering
Create Project
POST /companycam/v2/projects
Content-Type: application/json
{
"name": "New Construction Project",
"address": {
"street_address_1": "123 Main St",
"city": "Los Angeles",
"state": "CA",
"postal_code": "90210",
"country": "US"
}
}Get Project
GET /companycam/v2/projects/{id}Update Project
PUT /companycam/v2/projects/{id}
Content-Type: application/json
{
"name": "Updated Project Name"
}Delete Project
DELETE /companycam/v2/projects/{id}Archive Project
PATCH /companycam/v2/projects/{id}/archiveRestore Project
PUT /companycam/v2/projects/{id}/restoreList Project Photos
GET /companycam/v2/projects/{project_id}/photosQuery parameters:
page- Page numberper_page- Results per pagestart_date- Filter by start date (Unix timestamp)end_date- Filter by end date (Unix timestamp)user_ids- Filter by user IDsgroup_ids- Filter by group IDstag_ids- Filter by tag IDs
Add Photo to Project
POST /companycam/v2/projects/{project_id}/photos
Content-Type: application/json
{
"uri": "https://example.com/photo.jpg",
"captured_at": 1609459200,
"coordinates": {
"lat": 34.0522,
"lon": -118.2437
},
"tags": ["exterior", "front"]
}List Project Comments
GET /companycam/v2/projects/{project_id}/commentsAdd Project Comment
POST /companycam/v2/projects/{project_id}/comments
Content-Type: application/json
{
"comment": {
"content": "Work completed successfully"
}
}List Project Labels
GET /companycam/v2/projects/{project_id}/labelsAdd Labels to Project
POST /companycam/v2/projects/{project_id}/labels
Content-Type: application/json
{
"labels": ["priority", "urgent"]
}Delete Project Label
DELETE /companycam/v2/projects/{project_id}/labels/{label_id}List Project Documents
GET /companycam/v2/projects/{project_id}/documentsUpload Document
POST /companycam/v2/projects/{project_id}/documents
Content-Type: application/json
{
"uri": "https://example.com/document.pdf",
"name": "Contract.pdf"
}List Project Checklists
GET /companycam/v2/projects/{project_id}/checklistsCreate Checklist from Template
POST /companycam/v2/projects/{project_id}/checklists
Content-Type: application/json
{
"checklist_template_id": "template_id"
}Get Project Checklist
GET /companycam/v2/projects/{project_id}/checklists/{checklist_id}List Assigned Users
GET /companycam/v2/projects/{project_id}/assigned_usersAssign User to Project
PUT /companycam/v2/projects/{project_id}/assigned_users/{user_id}List Collaborators
GET /companycam/v2/projects/{project_id}/collaboratorsList All Photos
GET /companycam/v2/photosQuery parameters:
page- Page numberper_page- Results per page
Get Photo
GET /companycam/v2/photos/{id}Update Photo
PUT /companycam/v2/photos/{id}
Content-Type: application/json
{
"photo": {
"captured_at": 1609459200
}
}Delete Photo
DELETE /companycam/v2/photos/{id}List Photo Tags
GET /companycam/v2/photos/{id}/tagsAdd Tags to Photo
POST /companycam/v2/photos/{id}/tags
Content-Type: application/json
{
"tags": ["exterior", "completed"]
}List Photo Comments
GET /companycam/v2/photos/{id}/commentsAdd Photo Comment
POST /companycam/v2/photos/{id}/comments
Content-Type: application/json
{
"comment": {
"content": "Great progress!"
}
}List Tags
GET /companycam/v2/tagsCreate Tag
POST /companycam/v2/tags
Content-Type: application/json
{
"display_value": "Exterior",
"color": "#FF5733"
}Get Tag
GET /companycam/v2/tags/{id}Update Tag
PUT /companycam/v2/tags/{id}
Content-Type: application/json
{
"display_value": "Interior",
"color": "#3498DB"
}Delete Tag
DELETE /companycam/v2/tags/{id}List Groups
GET /companycam/v2/groupsCreate Group
POST /companycam/v2/groups
Content-Type: application/json
{
"name": "Roofing Team"
}Get Group
GET /companycam/v2/groups/{id}Update Group
PUT /companycam/v2/groups/{id}
Content-Type: application/json
{
"name": "Updated Team Name"
}Delete Group
DELETE /companycam/v2/groups/{id}List All Checklists
GET /companycam/v2/checklistsQuery parameters:
page- Page numberper_page- Results per pagecompleted- Filter by completion status (true/false)
List Webhooks
GET /companycam/v2/webhooksCreate Webhook
POST /companycam/v2/webhooks
Content-Type: application/json
{
"url": "https://example.com/webhook",
"scopes": ["project.created", "photo.created"]
}Available scopes:
project.createdproject.updatedproject.deletedphoto.createdphoto.updatedphoto.deleteddocument.createdlabel.createdlabel.deleted
Get Webhook
GET /companycam/v2/webhooks/{id}Update Webhook
PUT /companycam/v2/webhooks/{id}
Content-Type: application/json
{
"url": "https://example.com/new-webhook",
"enabled": true
}Delete Webhook
DELETE /companycam/v2/webhooks/{id}