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

# CustomerBase API

Jentic publishes the only available OpenAPI specification for CustomerBase API, keeping it validated and agent-ready. CustomerBase is a field service and home services CRM that manages customers, appointments, estimates, jobs, reviews, users, roles, and work requests. The public API exposes CRUD-style endpoints across these resources so dispatchers, technicians, and integrators can keep external systems in sync. Authentication uses an X-API-Key header.

## For AI agents

Manage customers, appointments, estimates, jobs, reviews, users, and work requests for a field-service CRM, suitable for dispatch automation and external system sync.

## Scope

Does not handle payment processing, invoicing, or marketing campaigns - use for managing customers, appointments, estimates, jobs, and work requests only.

## Capabilities

- Maintain customer records - list, create, read, update, and delete customers in CustomerBase
- Schedule and retrieve appointments tied to customer records and assigned users
- Create and read estimates that quote work for a customer
- Track jobs from creation through completion against a customer record
- List user accounts and assign roles for dispatch and field staff
- Capture inbound work requests and surface customer reviews

## Use cases

### Dispatch and Scheduling Sync

Keep a third-party calendar or dispatch tool in sync with CustomerBase appointments. List appointments via GET /appointments, create new ones with POST /appointments, and reflect changes back to the external schedule. Suitable for home-services teams running a separate dispatch board or integrating CustomerBase with a field-mobile app.

Example prompt: Call GET /appointments on a 5-minute schedule and upsert each record into the external dispatch board, then POST /appointments for any new bookings created externally

### Customer Onboarding from Lead Form

Push leads captured on a marketing site or third-party form into CustomerBase as customer records. POST /customers with the captured fields, then optionally create a work request (POST /work_requests) to track the inbound interest. Useful for service businesses that want a single CRM source of truth without manual data entry.

Example prompt: Call POST /customers with the lead's name, email, phone, and address, then POST /work_requests linking the customer ID to capture the requested service

### Estimate and Job Pipeline Tracking

Track the move from quote to completed work by linking estimates and jobs against a customer. POST /estimates creates a quote, POST /jobs converts an accepted estimate into scheduled work, and GET `/jobs/{id}` retrieves status for ops dashboards. Suitable for owners who want a clean view of conversion from estimate to job.

Example prompt: Call POST /estimates for a new quote, then upon acceptance call POST /jobs referencing the customer ID and estimate to schedule the work

### User and Role Provisioning

Provision dispatchers and technicians as the team grows. GET /roles surfaces the assignable roles, POST /users creates a new account, and PUT `/users/{id}` updates assignments. Useful when a People Ops or IT system is the source of truth for staff and CustomerBase needs to mirror that list.

Example prompt: Call GET /roles to list valid roles, then POST /users with the technician's email, name, and role to grant access

### AI Agent Field Service Workflow via Jentic

An AI agent helping a service business owner triage inbound work uses Jentic to call CustomerBase directly. The agent searches for 'create customer', loads POST /customers, supplies the captured fields, and follows up with /work_requests to log the request without bespoke integration code.

Example prompt: Use Jentic to search 'create customer' and execute POST /customers for each lead in an inbox parser, then POST /work_requests for any service request found

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/customers` | List customers |
| POST | `/customers` | Create a customer |
| GET | `/appointments` | List appointments |
| POST | `/appointments` | Schedule an appointment |
| POST | `/estimates` | Create an estimate |
| POST | `/jobs` | Create a job |
| POST | `/work_requests` | Create a work request |
| GET | `/users` | List users |

## Key resources

- **Customers** — List, create, read, update, and delete customer records
- **Appointments** — List, create, and retrieve appointments tied to customers
- **Estimates** — Create and retrieve quotes for customer work
- **Jobs** — Create and retrieve jobs as work moves from estimate to completion
- **Reviews** — Read reviews left by customers
- **Users** — List, create, update, and delete user accounts in the workspace
- **Roles** — List the role catalogue used for user assignment
- **Work Requests** — List and create inbound work requests against customers

## Why Jentic

- **Setup:** Wiring the CustomerBase API by hand means provisioning an API-key request header, setting it on every header, and formatting its customer, appointment, estimate, and job request bodies yourself. Through Jentic you install once, import the CustomerBase API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** CustomerBase creates records from the request body rather than a resource id in the URL path, so scope the agent to the operations it needs, such as listing customers or creating an appointment. If you grant only the read operations, creating jobs or work requests is not included unless you add them.
- **Credential handling:** Your CustomerBase API-key request header 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 'create a customer' or 'schedule an appointment', and Jentic returns the matching CustomerBase operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Salesforce API** — Enterprise CRM with broad object model and customisation
- **HubSpot CRM Objects** — HubSpot CRM with contacts, companies, deals, and tickets
- **Freshdesk API** — Customer support ticketing platform that pairs with field service

## FAQ

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

CustomerBase does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call CustomerBase 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 CustomerBase API use?

The API uses an API key sent in the X-API-Key header on every request. Through Jentic the key is held in the encrypted vault and injected at call time, so the raw key never enters the agent's prompt.

### Can I create appointments with the CustomerBase API?

Yes. Call POST /appointments with the customer ID, scheduled time, and any additional fields. Use GET /appointments to list and GET `/appointments/{id}` to retrieve a specific record.

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

Rate limits depend on the CustomerBase plan and are not encoded in the spec. Treat the public API as suitable for moderate sync volumes rather than high-frequency polling; check your CustomerBase account for current limits.

### How do I create a new customer through Jentic?

Run pip install jentic, search for 'create customer', load POST /customers, and execute it with the lead's name, email, phone, and address. Jentic posts the request and returns the created customer ID.

### How do I track a job from estimate to completion?

Create the quote with POST /estimates, then call POST /jobs referencing the customer ID once the estimate is accepted. GET `/jobs/{id}` retrieves the current status for dashboards.

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

Yes. Because you run Jentic One yourself, your own rules decide which CustomerBase operations and credentials the agent may use, so you can grant only read calls like GET /customers and GET /appointments and withhold everything else. If you scope the agent to those read operations, write calls such as POST /customers, POST /appointments, POST /estimates, POST /jobs, and POST /work_requests are not included unless you add them. This lets you keep an agent to safe lookups while blocking record creation, and your API key stays with your instance rather than in the agent's prompt.
