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

# Ellipsend API

Jentic publishes the only available OpenAPI specification for Ellipsend API, keeping it validated and agent-ready. Ellipsend is an activity-management and lightweight CRM platform with a 24-endpoint REST API covering activities, products, contacts, statuses, labels, and assignees. Authentication uses OAuth 2.0 with explicit register, token, and refresh endpoints, and all calls hit https://api.ellipsend.com/v1. Resources are designed around tracked activities - each activity ties to a contact, a status, a set of labels, and an assignee.

## For AI agents

Track contact-level activities, products, statuses, and labels in Ellipsend. Authenticated via OAuth 2.0 against api.ellipsend.com.

## Scope

Does not handle email sending, deal pipelines, invoicing, or marketing campaigns - use for activity, product, contact, status, and label management only.

## Capabilities

- Create and retrieve activities tied to contacts via /activity
- Manage a product catalogue with full CRUD on /products
- Configure status pipelines using /statuses to track work stages
- Tag activities and contacts with reusable labels via /labels
- List internal assignees so activities can be routed to the right person
- Read activity-type metadata to populate forms and dropdowns
- Issue OAuth tokens via `/auth/token` and refresh them with `/auth/refresh`

## Use cases

### Activity Tracking and Routing

Operate a sales or service team's activity log inside Ellipsend by creating activities on contact, applying status pipelines, and assigning to the right team member. The /activity, /statuses, and /assignees endpoints together form a minimal task-routing surface, and labels add reusable tagging without schema changes. Suitable for teams of up to a few hundred users.

Example prompt: Create an activity of type 'follow-up call' for contact_token=xyz, set its status to 'in-progress', label it 'priority', and assign it to assignee_id=12

### Product Catalogue Sync

Sync a product catalogue from an upstream system (ERP or e-commerce platform) into Ellipsend so activities can reference the correct product. The /products endpoints support full create, update, and delete, which lets a daily sync job mirror the source of truth idempotently.

Example prompt: List existing products in Ellipsend, diff against the ERP product list, and POST any missing products before deleting items the ERP no longer sells

### OAuth Onboarding for an Integration

Build a multi-tenant integration that lets each Ellipsend customer authorise the app once via `/auth/register` and `/auth/token`, then refreshes tokens with `/auth/refresh` on schedule. Storing only the refresh token externally keeps the access-token blast radius small, and the company-info endpoint lets the integration label connections cleanly.

Example prompt: Exchange the registration credentials at `/auth/token`, store the refresh token, then call /company to label the connection with the workspace name

### AI Agent Integration via Jentic

Build an AI agent that scans email threads for follow-up commitments and creates matching activities in Ellipsend with the right contact, label, and assignee. Through Jentic, the agent searches by intent, loads the activity schema, and executes without holding the OAuth tokens in its prompt.

Example prompt: Search Jentic for 'create an activity for a contact', load the schema for POST /activity, and create a follow-up activity from the latest email thread

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/activity` | Create an activity |
| GET | `/activity-types` | List activity types |
| POST | `/products` | Create a product |
| PUT | `/contact/{token}` | Update a contact |
| POST | `/statuses` | Create a status |
| POST | `/labels` | Create a label |
| POST | `/auth/token` | Get an OAuth access token |

## Key resources

- **Activities** — Create and retrieve activities tied to contacts, with status, labels, and assignee
- **Activity Types** — Read available activity types for form population
- **Products** — Full CRUD on the product catalogue
- **Contacts** — Update contact records by token
- **Statuses** — Manage status pipelines used by activities
- **Labels** — Manage reusable labels for activities and contacts
- **Assignees** — List internal users who can be assigned activities
- **Authentication** — OAuth 2.0 register, token, and refresh endpoints
- **System** — Company info and health-check endpoints

## Why Jentic

- **Setup:** Wiring Ellipsend by hand means running its OAuth token exchange at POST `/auth/token`, refreshing tokens, and mapping activity, product, and label operations yourself. Through Jentic you install once, import the Ellipsend API from the API Directory, store the OAuth credential once, and your agent calls it.
- **Permission scoping:** Ellipsend puts the contact token in the URL path (`/contact/{token}`), so a rule can pin your agent to one contact for updates. You choose the operations it may call, so creating activities, products, statuses, or labels are not included unless you add them.
- **Credential handling:** Your Ellipsend OAuth credential 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 an activity for a contact' or 'add a product', and Jentic returns the matching Ellipsend operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Pipedrive API** — Pipedrive is a full sales CRM with deals and pipelines beyond Ellipsend's activity-centric model
- **HubSpot CRM Contacts API** — HubSpot offers a richer contact and engagement model than Ellipsend's contact endpoints
- **Zoho CRM API** — Zoho CRM covers leads, deals, and analytics where Ellipsend stays focused on activities

## FAQ

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

Ellipsend publishes its API reference as HTML at api.ellipsend.com/v1/docs rather than as a versioned OpenAPI specification. Jentic generates and maintains this spec so AI agents and developers can call Ellipsend 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 Ellipsend API use?

Ellipsend uses OAuth 2.0. Get a token at POST `/auth/token`, refresh it at POST `/auth/refresh`, and register new app credentials at POST `/auth/register.` Through Jentic, both the access and refresh tokens are stored encrypted in the vault and never appear in the agent's prompt.

### Can I create an activity for a specific contact?

Yes. POST /activity creates an activity and accepts the contact reference, activity type, status, labels, and assignee in the body. Use GET `/activity/{id}` afterwards to confirm the persisted record.

### How do labels and statuses differ in Ellipsend?

Statuses model the stage of an activity in a workflow (one status per activity at a time), while labels are reusable tags that can be applied freely. Both have full CRUD endpoints under /statuses and /labels.

### How do I create an activity through Ellipsend via Jentic?

Run the Jentic search query 'create an activity for a contact', load the input schema for POST /activity, then execute. Jentic injects the OAuth bearer token at execution time, so the agent does not need to manage the token lifecycle.

### Is there a way to update a contact without their internal ID?

Yes. PUT `/contact/{token}` takes a contact token rather than a numeric ID, which makes it safe to share with web forms and embedded widgets that should only update one specific contact.

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

Yes. Because Jentic One is self-hosted, your own rules decide which Ellipsend operations and credentials the agent may use, and it can only call what you explicitly allow. You can grant read access to activities and activity types while withholding write operations, so creating activities, products, statuses, or labels are not included unless you add them. Since Ellipsend puts the contact token in the URL path at PUT `/contact/{token}`, a rule can pin the agent to updating a single contact rather than any record.
