Product
Jentic OSThe workplace. An in-house AI platform for every employeeJentic OneSafe access. Agents reach your systems without holding keysJentic AIRThe foundation. Gets your existing platforms ready for AI
Pricing
Developers

GET STARTED

API DirectoryBrowse 10,000+ APIs Ready For AI Agent IntegrationDocumentationGuides and API reference

TOOLS

API ScoringCheck your AI Readiness using our scorecardArazzo UIVisualize Arazzo Workflows As Interactive DocumentationArazzo EditorBuild And Edit Multi-Step API Workflows Visually

COMMUNITY

GitHubOpen source projects and examplesOpen StandardsBuilt on open specs. Never locked in.
Resources
Company
About UsOur mission and teamCareersJoin our teamContactGet in touch
Try it now
Jentic OSJentic OneJentic AIR
Pricing
API DirectoryDocumentationAPI ScoringArazzo UIArazzo EditorGitHubOpen Standards
Resources
About UsCareersContact
Try it now
JenticJentic
Products
  • Jentic OS
  • Jentic One
  • Jentic AIR
For Developers
  • API Directory
  • Documentation
  • GitHub
Company
  • About Jentic
  • Careers
  • Contact Us
  • Trust Centre
ISO/IEC 27001:2022 certification badge issued by Prescient SecurityISO/IEC 27001:2022 certification badge issued by Prescient Security

Information Security Management System

Certified to ISO/IEC 27001:2022 by Prescient Security

AICPA SOC for Service Organizations logoAICPA SOC for Service Organizations logo

SOC 2® Type 1 report

Audited by Prescient Assurance

Terms & Conditions•Privacy Policy•
© 2026 Jentic Technology Ltd. All rights reserved.
2 Grattan Court East, Dublin, D02 VX86, Ireland
Switch to light modeSwitch to dark mode
APIs / CRM / EspoCRM REST API
EspoCRM REST API logo

EspoCRM REST API

63
AI ReadinessAI-Aware (B-)63/100
See full scorecard
Agent-ready OpenAPI document · curated by JenticCRMContact Managementbasic, apiKey8 EndpointsREST

Know of an official OpenAPI document? Contribute it →

For Agents

Read and write any EspoCRM entity (contacts, accounts, leads, opportunities, custom objects) and manage their relationships through a single CRUD pattern.

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 maintains this OpenAPI specification for EspoCRM REST API, keeping it validated and agent-ready across EspoCRM installations. 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.

Jentic One on GithubView OpenAPI Document

Install Jentic One Beta

Connect the EspoCRM REST API to your agent

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.

Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.

1

Step 1: Jentic One Host machine

# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fespocrm.com%2Fespocrm" | sh
2

Step 2: Agent machine

# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fespocrm.com%2Fespocrm" | sh
jentic register       # connects your agent to your Jentic One instance

Jentic 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.

Capabilities

What an agent can do with EspoCRM REST 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

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

Use Cases

Patterns agents use EspoCRM REST 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 your Jentic One instance. 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.

Key Endpoints

8 endpoints — jentic maintains this openapi specification for espocrm rest api, keeping it validated and agent-ready across espocrm installations.

METHOD

PATH

DESCRIPTION

GET

/{entityType}

List records of an entity type with filters and paging

POST

/{entityType}

Create a new record of an entity type

GET

/{entityType}/{id}

Read a single record by ID

PUT

/{entityType}/{id}

Update a record by ID

DELETE

/{entityType}/{id}

Delete a record by ID

GET

/{entityType}/{id}/{link}

List related records via a relationship link

POST

/{entityType}/{id}/{link}

Attach a related record

DELETE

/{entityType}/{id}/{link}

Detach a related record

GET

/{entityType}

List records of an entity type with filters and paging

POST

/{entityType}

Create a new record of an entity type

GET

/{entityType}/{id}

Read a single record by ID

PUT

/{entityType}/{id}

Update a record by ID

DELETE

/{entityType}/{id}

Delete a record by ID

GET

/{entityType}/{id}/{link}

List related records via a relationship link

POST

/{entityType}/{id}/{link}

Attach a related record

DELETE

/{entityType}/{id}/{link}

Detach a related record

Jentic AI Readiness Score

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

E

EspoCRM REST API

- AI-Aware (B-)
63/100
100
Foundational Compliance
63
Developer Experience & Jentic Compatibility
56
AI-Readiness & Agent Experience
94
Agent Usability
30
Security
100
AI Discoverability
Powered by JenticScoring Framework 1.0.0 | Scoring Engine 0.4.0
Show dimension breakdown
100

Foundational Compliance

Base layer of spec validity and structural soundness.

Grade: A+Signals: 4
98%

Lint Results

Aggregated quality score from linter diagnostics, weighted by severity.

100%

Resolution Completeness

Percentage of `$ref` references that resolve successfully.

100%

Specification Validity

Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).

100%

Structural Integrity

Structural correctness score based on schema issues using logarithmic dampening.

63

Developer Experience & Jentic Compatibility

Clarity, completeness, and ingestion readiness for developers and tooling.

Grade: B-Signals: 4
0%

Example Density

How richly the API is illustrated with examples.

100%

Example Validity

Percentage of examples that conform to their schemas.

50%

Response Coverage

Percentage of operations with complete response definitions (success, client error, server error).

100%

Tooling Readiness

Health of API ingestion, bundling, and resolution within Jentic pipelines.

56

AI-Readiness & Agent Experience

Semantic breadth, depth, and agent comprehension for AI systems.

Grade: CSignals: 4
50%

Description Coverage

Coverage of descriptions across API elements.

0%

Error Standardization

Coverage of RFC 9457 Problem Details for error responses.

100%

OperationId Quality

Coverage, uniqueness, and casing consistency of operationIds for AI inference.

73%

Summary Coverage

Coverage of summaries across operations/tags/info.

94

Agent Usability

Functional utility, complexity comfort, and AI orchestration readiness.

Grade: A+Signals: 1
94%

Complexity Comfort

Agent comfort level based on API operational and structural complexity.

30

Security

Trust, risk posture, and security compliance.

Grade: FSignals: 1
30%

Authentication Strength

Average quality of security schemes based on authentication method strength (weakest link for OAuth2).

100

AI Discoverability

Findability, semantic richness, and reasoning readiness.

Grade: A+Signals: 1
100%

Descriptive Richness

Clarity and depth of descriptions across API elements.

View full reportHow the score is calculatedMore about the dimensions

Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

Score your own APIScoring CLI agent skill
npx @jentic/api-scorecard-cli score <openapi-url>

Why Jentic?

What agents get from Jentic-routed access to this vendor.

Setup

Wiring EspoCRM by hand means choosing between HTTP basic auth and the API-key request header, filling in your own host in the /api/v1 base URL, and mapping generic entity CRUD yourself. Through Jentic you install once, import the EspoCRM REST API from the API Directory, store the API key once, and your agent calls it.

Permission scoping

EspoCRM puts the entity type and record id in the URL path (/{entityType}/{id}), so a rule can pin your agent to reading or updating one entity type and nothing else. You choose the operations it may call, so a destructive one like DELETE /{entityType}/{id} is not included unless you add it.

Credential isolation

Your EspoCRM API key or basic auth credentials are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.

Intent-based discovery

Agents search Jentic by intent such as 'create a CRM contact' or 'update a record', and Jentic returns the matching {entityType} CRUD operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

Related APIs

Alternatives and complements available in the Jentic catalogue.

Alternative

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.

Alternative

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.

Alternative

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.

FAQs

Specific to using EspoCRM REST API through Jentic.

Does EspoCRM provide an official OpenAPI specification?

Yes, but per installation rather than at one public address. From EspoCRM v9.3 onward each instance generates its own OpenAPI document and serves it from the /api/v1/OpenApi endpoint of that instance, reachable by admin users and by API users whose role enables the OpenAPI scope, or from Administration > API Users > OpenAPI spec. That document describes the entity types and custom fields configured in that one instance, so there is no single vendor-hosted spec to point an agent at. Jentic maintains this instance-independent specification of the generic entity CRUD and relationship pattern instead, and validates it. EspoCRM documents the endpoint at https://docs.espocrm.com/development/api/#openapi-specification. Get started with Jentic One, the self-hosted execution layer.

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.

Can I limit what my agent is allowed to do with the EspoCRM REST API?

Yes. Because Jentic One is self-hosted, your own rules decide which EspoCRM operations and credentials the agent may use. Since EspoCRM puts the entity type and record id in the URL path, such as /{entityType}/{id}, you can pin the agent to reading or updating a single entity type like Contact or Lead and nothing else. You choose the operations it may call, so a destructive one like DELETE /{entityType}/{id} is left out unless you add it, and the stored API key or basic auth credentials are injected at execution time rather than shown to the agent.

GET STARTED

Start building with EspoCRM REST API

Explore with Jentic One
View OpenAPI Document