canonical: https://jentic.com/apis/companycam.com/companycam

# CompanyCam API

Jentic publishes the only available OpenAPI specification for CompanyCam API, keeping it validated and agent-ready. The CompanyCam API lets contractors and field-service teams attach geo-tagged, time-stamped photos to projects and share them with crews, clients, and back-office systems. Through the API agents can manage projects, upload and tag photos, run checklists from templates, group team members, and subscribe to webhooks for project and photo events. It is built around the workflow of construction, roofing, restoration, and trades businesses where photo evidence drives invoicing, insurance, and quality control.

## For AI agents

Manage CompanyCam projects, photos, tags, comments, checklists, and webhooks for field-service and construction crews from a single API.

## Scope

Does not handle invoicing, scheduling, or estimating - use for field-photo and project documentation only.

## Capabilities

- Create projects and attach photos with location and tag metadata
- Upload field photos and assign them to a project, user, and tag set
- Run a checklist against a project from a saved template
- Group users into crews and manage their project access
- Comment on photos to coordinate punch lists between field and office
- Subscribe to webhooks for project, photo, comment, and tag events
- Archive and restore completed projects to keep the active list clean

## Use cases

### Field Photo Capture and Project Documentation

Capture geo-tagged photos at a job site and attach them to the right CompanyCam project so the office team has a real-time visual record. The API exposes /projects and `/projects/{project_id}/photos` for creation, plus tag and comment endpoints for context. Restoration and roofing companies use this to build insurance evidence packages without manual photo organization.

Example prompt: Create a new project named '123 Main St Roof Replacement', then upload three photos tagged 'before' to that project

### Quality Control Checklists

Run a standardized checklist against every completed job to enforce quality and compliance. The API offers /checklists and /templates so agents can spawn a checklist instance from a template and report progress. Service contractors use this to prove that every install step was photographed and signed off before the customer is invoiced.

Example prompt: Find the 'Final Walkthrough' template, create a checklist on project 88421, and list its required photo items

### CRM and Accounting Webhook Integration

Push CompanyCam events into a CRM, accounting, or job-management system the moment they happen in the field. The /webhooks endpoints let agents subscribe to project, photo, comment, and tag events and receive structured payloads. This avoids polling and keeps the office system synchronized with the crew's actual progress.

Example prompt: Register a webhook subscription for project.photo.created events to forward each new photo URL to the company's billing system

### Agent-Driven Field Operations via Jentic

Let an AI assistant handle photo and project bookkeeping by voice or chat for crews on site. Through Jentic an agent searches for the right CompanyCam operation, loads its schema, and executes the upload or status update without the developer wiring auth or pagination. This is well suited to mobile or in-vehicle assistants where the crew prefers spoken commands.

Example prompt: On voice command 'log this as the finished gutter on the Henderson job', find project 'Henderson', upload the active photo, and tag it 'after'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/projects` | Create a project |
| GET | `/projects/{id}` | Retrieve a project |
| POST | `/projects/{project_id}/photos` | Upload a photo to a project |
| GET | `/photos/{id}` | Retrieve a photo with tags and metadata |
| POST | `/photos/{photo_id}/tags` | Tag a photo |
| POST | `/photos/{photo_id}/comments` | Comment on a photo |
| POST | `/webhooks` | Register an event webhook |
| POST | `/checklists` | Create a checklist from a template |

## Key resources

- **Company** — Tenant account details for the current token
- **Users** — Crew members and their permissions
- **Projects** — Job sites and their lifecycle (create, archive, restore)
- **Photos** — Field photos with tagging and commenting
- **Tags** — Photo and project tags configured for the company
- **Groups** — Crew groupings for project access
- **Checklists and Templates** — Standardized job checklists and reusable templates
- **Webhooks** — Event subscriptions for projects, photos, and comments

## Why Jentic

- **Setup:** Wiring CompanyCam by hand means learning its bearer auth, mapping its project and photo resources, and handling image uploads and webhooks yourself. Through Jentic you install once, import CompanyCam from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** CompanyCam puts the project and photo ids in the URL path (`/projects/{id}`, `/photos/{photo_id}/tags`), so a rule can pin your agent to one project or photo. You choose the operations it may call, so you can allow photo and comment posting while leaving webhook creation out unless you add it.
- **Credential handling:** Your CompanyCam bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add a photo to a project' or 'tag a field photo', and Jentic returns the matching CompanyCam operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Procore** — Construction project management platform that consumes field data for budgeting, RFIs, and submittals
- **Smartsheet** — Spreadsheet-driven work management for project schedules and trackers
- **Cloudinary Upload API** — General-purpose image upload, transformation, and CDN delivery

## FAQ

### Why is there no official OpenAPI spec for CompanyCam API?

CompanyCam does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call CompanyCam API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the CompanyCam API use?

The API uses HTTP bearer authentication. Pass your CompanyCam personal access token or OAuth access token in the Authorization header as 'Bearer {token}'. Through Jentic the token is stored encrypted in the vault and injected at execution time.

### Can I upload photos with the CompanyCam API?

Yes. Use POST `/projects/{project_id}/photos` to attach a photo to a specific project, or POST /photos for top-level photo creation. Photos can carry tags via POST `/photos/{photo_id}/tags` and comments via POST `/photos/{photo_id}/comments.`

### What are the rate limits for the CompanyCam API?

CompanyCam enforces a default rate limit of 300 requests per minute per token. Sustained bulk operations should add backoff on HTTP 429 responses; Jentic surfaces these as structured errors rather than silently retrying.

### How do I create a project with the CompanyCam API through Jentic?

Run the Jentic search query 'create a CompanyCam project', load the returned operation (POST /projects), and execute it with name, address, and assigned users in the request body. The created project id is returned for use in photo uploads.

### Can I subscribe to project events via webhooks?

Yes. POST /webhooks registers a subscription for events such as project.created, project.photo.created, and comment.created. CompanyCam will POST signed payloads to the URL you provide; verify the signature header before trusting the payload.

### Can I limit what my agent is allowed to do with the CompanyCam API?

Yes. Jentic One is self-hosted, so your own rules decide which CompanyCam operations and credentials your agent can use. Because CompanyCam puts project and photo ids in the URL path, such as `/projects/{id}` and `/photos/{photo_id}/tags`, you can pin the agent to a single project or photo. You also choose the exact operations it may call, so you can allow uploading photos and posting comments while excluding webhook creation until you decide to grant it.
