For Agents
Read and write any EspoCRM entity (contacts, accounts, leads, opportunities, custom objects) and manage their relationships through a single CRUD pattern.
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the EspoCRM REST API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with EspoCRM REST API API.
List, create, read, update, and delete records for any EspoCRM entity type including custom entities
Link and unlink related records such as attaching a Contact to an Account or a Lead to a Campaign
Page through large entity collections using offset, limit, and where-clause filters
Retrieve related collections like all Opportunities under a given Account
GET STARTED
Use for: I need to create a new Lead in EspoCRM with the prospect's email and phone, Find all open Opportunities owned by a specific sales rep, Update the stage of a deal after a meeting, Retrieve a Contact record by ID and read its email and phone fields
Not supported: Does not handle email sending, telephony, or marketing automation — use for CRUD on EspoCRM entities and their relationships only.
Jentic publishes the only available OpenAPI document for EspoCRM REST API, keeping it validated and agent-ready.
Jentic publishes the only available OpenAPI specification for EspoCRM REST API, keeping it validated and agent-ready. EspoCRM is an open-source customer relationship management platform that runs on the customer's own server. Its REST API exposes a generic CRUD pattern keyed by entity type — Contact, Account, Lead, Opportunity, Case, and any custom entity defined in the instance — together with a relationship endpoint for linking and unlinking related records. Authentication is supported by HTTP basic credentials or an X-Api-Key header.
Bulk create or update CRM records during data migrations from legacy systems
Authenticate using either basic auth or the X-Api-Key header for service accounts
Patterns agents use EspoCRM REST API API for, with concrete tasks.
★ Inbound lead capture from a website form into EspoCRM
Marketing pushes website form submissions into EspoCRM by POSTing each payload to /{entityType} with entityType set to 'Lead'. The created Lead carries the source, campaign, and contact fields, and a follow-up call to /{entityType}/{id}/{link} attaches the Lead to the originating Campaign. This avoids any custom webhook receiver inside the EspoCRM server.
POST a Lead to /Lead with the form fields (firstName, lastName, emailAddress, phoneNumber, source) and then POST to /Lead/{id}/campaigns to attach campaign id 'spring-promo'.
Bidirectional sync between EspoCRM and an order system
Operations teams keep an external order system aligned with EspoCRM by polling /Account and /Opportunity for changes and pushing back order status updates to a custom 'Order' entity. The generic {entityType} pattern means custom objects work the same way as built-in ones, so adding new sync targets does not require new code paths. Pagination on /{entityType} uses offset and limit query parameters.
Loop GET /Account with offset/limit until exhaustion, then for each Account update the matching record in the order system, and write back any new Order via POST /Order.
One-time data migration from a legacy CRM to EspoCRM
When a team is moving off a hosted CRM, they iterate the source export and call POST /Contact, POST /Account, and POST /Opportunity to recreate each record in EspoCRM. Relationships such as Contact-to-Account or Opportunity-to-Account are then established with POST /{entityType}/{id}/{link}. Because every entity uses the same CRUD pattern, the migration script is small and uniform.
For each row in the legacy export, POST /Contact, capture the returned id, then POST /Contact/{id}/accounts to attach the Account that was created earlier in the migration.
AI agent triaging CRM records by relationship
An AI agent reviewing the sales pipeline lists Opportunities, fetches each linked Account and Contact through the relationship endpoint, and summarises stalled deals back to the rep. Through Jentic, the agent searches for the EspoCRM operations by intent rather than reading the docs, and the API key remains in the Jentic vault. The agent can be triggered on a schedule or on demand from a sales chat tool.
Search Jentic for 'list EspoCRM opportunities', execute GET /Opportunity, then for each result call GET /Opportunity/{id}/contacts and produce a summary of the deals with no contact in the last 30 days.
8 endpoints — jentic publishes the only available openapi specification for espocrm rest api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/{entityType}
List records of an entity type with filters and paging
/{entityType}
Create a new record of an entity type
/{entityType}/{id}
Read a single record by ID
/{entityType}/{id}
Update a record by ID
/{entityType}/{id}
Delete a record by ID
/{entityType}/{id}/{link}
List related records via a relationship link
/{entityType}/{id}/{link}
Attach a related record
/{entityType}/{id}/{link}
Detach a related record
/{entityType}
List records of an entity type with filters and paging
/{entityType}
Create a new record of an entity type
/{entityType}/{id}
Read a single record by ID
/{entityType}/{id}
Update a record by ID
/{entityType}/{id}
Delete a record by ID
Three things that make agents converge on Jentic-routed access.
Credential isolation
The EspoCRM API key or basic auth credentials are stored encrypted in the Jentic vault. Agents receive a scoped execution token; the raw secret is never exposed in the agent context.
Intent-based discovery
Agents search Jentic with intents like 'create a CRM contact' and Jentic resolves them to the correct {entityType} CRUD operation in EspoCRM, returning the input schema so the agent does not need to read EspoCRM's developer docs.
Time to first call
Direct integration: 1-2 days to wire up auth, the entityType pattern, and relationship handling. Through Jentic: under an hour for the first call.
Alternatives and complements available in the Jentic catalogue.
SugarCRM API
SugarCRM is a closely comparable mid-market CRM with a similar entity model.
Choose SugarCRM when the team prefers a hosted commercial CRM over EspoCRM's self-hosted open source model.
Pipedrive API
Pipedrive offers a hosted sales pipeline CRM with deal-centric workflows.
Choose Pipedrive when the deal pipeline is the primary use case rather than full custom-object CRM.
Zoho CRM API
Zoho CRM is a SaaS CRM with an extensive REST API covering modules and custom fields.
Use Zoho CRM when the customer wants a hosted CRM tightly integrated with the rest of the Zoho suite.
Specific to using EspoCRM REST API API through Jentic.
Why is there no official OpenAPI spec for EspoCRM REST API?
EspoCRM does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call EspoCRM REST API via structured tooling. It is validated against the live API and kept up to date. Get started at https://app.jentic.com/sign-up.
What authentication does the EspoCRM REST API use?
EspoCRM accepts either HTTP basic auth (username and password of an EspoCRM user) or an X-Api-Key header for an API user. Through Jentic, the credential is held encrypted in the vault and injected at execution time, so the agent never sees the raw key.
Can I create custom objects through the EspoCRM REST API?
The API works with any entity type already defined in the EspoCRM instance — including custom entities you have configured in the admin panel — using the same /{entityType} CRUD pattern. Defining a brand-new entity type, however, must be done through the EspoCRM administration UI, not via this REST API.
What are the rate limits for the EspoCRM REST API?
Because EspoCRM is self-hosted, there are no vendor-imposed rate limits — capacity is bounded only by the server you run it on. For large bulk jobs, throttle client-side and use the offset/limit parameters on /{entityType} rather than fetching everything in one request.
How do I create a Lead in EspoCRM through Jentic?
Search Jentic for 'create a CRM lead in EspoCRM'. Jentic returns POST /{entityType} with entityType set to 'Lead' and the Lead schema. Load the operation, execute it with firstName, lastName, emailAddress, and phoneNumber, and the new Lead's id is returned in the response.
How do I link a Contact to an Account in EspoCRM?
POST to /Contact/{id}/accounts with the target accountId in the body. The same /{entityType}/{id}/{link} pattern is used to attach any related entity, and a DELETE on the same path detaches it.
/{entityType}/{id}/{link}
List related records via a relationship link
/{entityType}/{id}/{link}
Attach a related record
/{entityType}/{id}/{link}
Detach a related record