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

# Kantata OX API

Jentic publishes the only available OpenAPI specification for Kantata OX API, keeping it validated and agent-ready. Kantata OX (formerly Mavenlink) is a professional services automation platform whose API exposes projects, users, custom fields, time entries, expenses, organisations, account memberships, rates, roles and skills, and event subscriptions. It is used by services firms to automate resource planning, time and expense capture, and client-billing workflows. Despite the rebrand the API still serves from api.mavenlink.com/api/v1.

## For AI agents

Manage projects, users, custom fields, time entries, expenses, and account memberships inside a Kantata OX professional services workspace. 52 endpoints covering the full PSA workflow.

## Scope

Does not handle external CRM contact storage, accounting ledgers, or payroll runs - use for Kantata OX project, membership, custom field, rate, and event management only.

## Capabilities

- Create, update, and disable account memberships and roles via /account_memberships endpoints
- Inspect and manage custom field definitions and values across projects, users, and organisations
- Subscribe to platform event types and manage active subscriptions via /subscribed_events endpoints
- Manage account locations and rates that feed into project budgeting and billing
- Export account-level data through the /exports endpoints for reconciliation and reporting
- Configure account-wide settings, roles, and skill mappings through dedicated /settings endpoints

## Use cases

### Professional Services Automation Sync

Keep a services firm's identity, role, and rate data in sync between Kantata OX and an HRIS or finance system. Account memberships, roles, and rates exposed through the API let downstream systems mirror the staffing model and run accurate margin reporting. Integration is typically a few days for nightly syncs against a stable contract since /account_memberships and /rates support filter and pagination.

Example prompt: List active account memberships via GET /account_memberships?disabled=false and update each user's external system ID using PATCH `/account_memberships/{id}.`

### Custom Field Automation Across Projects

Drive consistency in project metadata by programmatically defining and updating custom fields across all active projects in Kantata OX. The Custom Fields endpoints let an automation create a field once and apply it to every matching project, then bulk-update values when an external CRM changes (e.g. account tier flips). Removes manual cleanup work after every reorg.

Example prompt: Define a custom field 'Account Tier' via the Custom Fields endpoint and populate it on every active project that matches a CRM account.

### Event-Driven Reporting and Alerts

Subscribe to Kantata OX events (membership changes, project updates, rate changes) and pipe them into a data warehouse or Slack channel for real-time observability. The /subscribed_events resource manages event-type subscriptions on the account and replaces brittle polling, giving finance and ops teams a low-latency feed without paying for a third-party iPaaS.

Example prompt: List available event types via GET `/subscribed_events/event_types` and subscribe to the membership.disabled event by POSTing to /subscribed_events.

### Agent-Driven Operations for Services Firms

Operations agents inside services firms use Jentic to discover Kantata OX endpoints by intent ('disable a former employee', 'update a project rate') and execute changes safely. Jentic enforces least-privilege scoping on the bearer token so an automation that just needs to disable memberships cannot accidentally export the entire roster.

Example prompt: Use the Jentic search 'disable a Kantata account membership', load the schema, and call `/account_memberships/{id}/disable` for the supplied membership ID.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/account_memberships` | List account memberships with filters |
| PATCH | `/account_memberships/{id}` | Update an account membership |
| POST | `/account_memberships/{id}/disable` | Disable an account membership |
| GET | `/subscribed_events/event_types` | List available event types |
| POST | `/subscribed_events` | Subscribe to an event type |
| GET | `/account_locations` | List account locations |

## Key resources

- **Account Memberships** — Create, list, update, enable, and disable user memberships on a Kantata account.
- **Custom Fields** — Define and manage custom field definitions and values across projects, users, and organisations.
- **Subscribed Events** — List event types and manage subscriptions for real-time notifications.
- **Account Locations and Rates** — Manage office locations and billable rate cards that feed budgeting.
- **Roles and Skills** — Administer the role catalogue and skill taxonomy used for resourcing.

## Why Jentic

- **Setup:** Wiring the Kantata OX API by hand means learning its bearer auth, calling the api.mavenlink.com host, and paging through membership and event resources yourself. Through Jentic you install once, import the Kantata OX API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Kantata OX puts the membership id in the URL path (`/account_memberships/{id}`), so a rule can pin your agent to one account membership for updates and reads. You choose the operations it may call, so a state-changing one like disabling a membership is not included unless you add it.
- **Credential handling:** Your Kantata OX 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 'list account memberships' or 'subscribe to Kantata events', and Jentic returns the matching Kantata OX operation with its parameter schema so the agent calls the right endpoint without reading Kantata's docs.

## Related APIs

- **Toggl Track API** — Lighter time-tracking and invoicing for services firms compared with full Kantata OX PSA.
- **Asana API** — Project task tracking that complements Kantata's resourcing and financials.
- **Smartsheet API** — Spreadsheet-style project planning sometimes used in place of PSA tools.
- **Clockify API** — Free time tracker that can feed entries into Kantata for billing.

## FAQ

### Why is there no official OpenAPI spec for Kantata OX API?

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

The API uses HTTP bearer tokens. Each request must include `Authorization: Bearer {token}` where the token is generated from the Kantata OX account's API settings. Through Jentic the token is stored encrypted in the vault and scoped per agent execution, so the raw bearer never appears in the agent's context.

### Can I disable a former employee's account membership programmatically?

Yes. POST `/account_memberships/{id}/disable` disables a membership without deleting historical time, expense, and assignment data. Use the matching `/account_memberships/{id}/enable` endpoint to reverse the change if the person rejoins.

### What are the rate limits for the Kantata OX API?

The platform applies per-account throttling and returns HTTP 429 when bursts exceed the contract limit. Exact ceilings depend on the customer's Kantata plan - check with your account manager before scaling automation traffic, and use /subscribed_events instead of polling to stay well under the limit.

### How do I subscribe to Kantata events through Jentic?

Run `pip install jentic` and search Jentic for 'subscribe to Kantata events'. Jentic returns the schema for POST /subscribed_events; supply the event type from `/subscribed_events/event_types` and a target webhook URL, then execute to register.

### Why does the Kantata OX API live on api.mavenlink.com?

Kantata OX was previously called Mavenlink. The product rebranded but the API host did not change to preserve existing integrations, so the base URL remains https://api.mavenlink.com/api/v1. All v1 endpoints are first-class on the current Kantata OX product.

### Is the Kantata OX API included in every plan?

API access is included in Kantata OX paid plans but not surfaced in trial accounts. Enterprise customers can request additional rate-limit headroom and event subscriptions through their account manager.

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

Yes. Jentic One is self-hosted, so your own rules decide which Kantata OX operations and credentials the agent may use. Because the membership id sits in the URL path (`/account_memberships/{id}`), you can pin the agent to one account membership for reads and updates, and you choose which operations it can call. A state-changing operation like disabling a membership via POST `/account_memberships/{id}/disable` is not available to the agent unless you add it.
