Maton

CompanyCam

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/company

Returns the current company information.

Get Current User

GET /companycam/v2/users/current

List Users

GET /companycam/v2/users

Query parameters:

  • page - Page number
  • per_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/projects

Query parameters:

  • page - Page number
  • per_page - Results per page (default: 25)
  • query - Search query
  • status - Filter by status
  • modified_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}/archive

Restore Project

PUT /companycam/v2/projects/{id}/restore

List Project Photos

GET /companycam/v2/projects/{project_id}/photos

Query parameters:

  • page - Page number
  • per_page - Results per page
  • start_date - Filter by start date (Unix timestamp)
  • end_date - Filter by end date (Unix timestamp)
  • user_ids - Filter by user IDs
  • group_ids - Filter by group IDs
  • tag_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}/comments

Add 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}/labels

Add 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}/documents

Upload 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}/checklists

Create 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_users

Assign User to Project

PUT /companycam/v2/projects/{project_id}/assigned_users/{user_id}

List Collaborators

GET /companycam/v2/projects/{project_id}/collaborators

List All Photos

GET /companycam/v2/photos

Query parameters:

  • page - Page number
  • per_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}/tags

Add Tags to Photo

POST /companycam/v2/photos/{id}/tags
Content-Type: application/json

{
  "tags": ["exterior", "completed"]
}

List Photo Comments

GET /companycam/v2/photos/{id}/comments

Add Photo Comment

POST /companycam/v2/photos/{id}/comments
Content-Type: application/json

{
  "comment": {
    "content": "Great progress!"
  }
}

List Tags

GET /companycam/v2/tags

Create 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/groups

Create 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/checklists

Query parameters:

  • page - Page number
  • per_page - Results per page
  • completed - Filter by completion status (true/false)

List Webhooks

GET /companycam/v2/webhooks

Create Webhook

POST /companycam/v2/webhooks
Content-Type: application/json

{
  "url": "https://example.com/webhook",
  "scopes": ["project.created", "photo.created"]
}

Available scopes:

  • project.created
  • project.updated
  • project.deleted
  • photo.created
  • photo.updated
  • photo.deleted
  • document.created
  • label.created
  • label.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}

Resources

On this page