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

# EmailOctopus API

Jentic publishes the only available OpenAPI specification for EmailOctopus API, keeping it validated and agent-ready. EmailOctopus is an email-marketing platform, and its v2 API exposes 25 endpoints across lists, contacts, tags, campaigns, campaign reports, and automations. Reports are particularly rich: per-campaign endpoints return openers, clickers, bounces, complainers, sent, and unsubscribed contacts as separate collections. The API is rooted at https://emailoctopus.com with paths under `/api/2.0/.`

## For AI agents

Manage EmailOctopus lists, contacts, tags, campaigns, and per-campaign reports for email-marketing workflows. Authenticated with an API key.

## Scope

Does not handle SMS, transactional email, landing-page builders, or paid-ad management - use for email-marketing lists, contacts, tags, campaigns, and reports only.

## Capabilities

- Manage subscriber lists with full CRUD via `/api/2.0/lists`
- Add, update, and delete contacts within a list including tag and field assignments
- Read campaign reports broken out by openers, clickers, bouncers, and complainers
- Create and inspect email campaigns with `/api/2.0/campaigns`
- Read configured automation flows via `/api/2.0/automations`
- Tag contacts and read tag membership through `/api/2.0/lists/{listId}/tags`
- Pull campaign-level engagement summaries for dashboards and exports

## Use cases

### List Growth and Subscriber Sync

Sync subscribers from a website signup form, CRM, or e-commerce platform into EmailOctopus by calling POST `/api/2.0/lists/{listId}/contacts.` The same endpoint group supports updating custom fields, applying tags, and removing contacts on unsubscribe. Suitable for lists ranging from a few hundred to several hundred thousand subscribers.

Example prompt: POST a contact to `/api/2.0/lists/{listId}/contacts` with email, first_name, and a 'newsletter' tag, then GET the contact to confirm it was created

### Campaign Performance Reporting

Build a marketing dashboard that pulls per-campaign open, click, bounce, and complaint counts from `/api/2.0/campaigns/{campaignId}/reports/summary` and the related per-cohort endpoints (clicked, opened, bounced, complained, unsubscribed). The breakouts let a dashboard render lists of who specifically engaged or failed, not just aggregates.

Example prompt: Fetch the report summary for campaign_id=abc123, then list the clicked-contacts via GET `/api/2.0/campaigns/{campaignId}/reports/clicked` for follow-up outreach

### Audience Segmentation by Tag

Segment a list by tag using `/api/2.0/lists/{listId}/tags` and `/api/2.0/lists/{listId}/tags/{tag}` to find audience subsets for targeted sends. Combine with `/api/2.0/lists/{listId}/contacts` to read full contact records for the chosen tag and feed a campaign-creation flow with the right recipients.

Example prompt: List tags on list_id=xyz, fetch the 'product-launch-interest' tag membership, and create a new campaign targeting only those contacts

### AI Agent Integration via Jentic

Build an AI marketing agent that drafts a campaign from a content brief, creates the campaign in EmailOctopus, and after the send pulls the report summary to write a results memo. Through Jentic, the agent searches by intent, loads the campaign-create schema, and executes without holding the API key in its prompt.

Example prompt: Search Jentic for 'create an EmailOctopus campaign', load the schema for POST `/api/2.0/campaigns`, and create a campaign from the latest content brief

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/2.0/lists` | Get all lists |
| POST | `/api/2.0/lists/{listId}/contacts` | Add a contact to a list |
| GET | `/api/2.0/lists/{listId}/tags` | Get tags for a list |
| POST | `/api/2.0/campaigns` | Create a campaign |
| GET | `/api/2.0/campaigns/{campaignId}/reports/summary` | Get campaign report summary |
| GET | `/api/2.0/campaigns/{campaignId}/reports/clicked` | Get contacts who clicked a campaign link |
| GET | `/api/2.0/automations` | List automations |

## Key resources

- **Lists** — Full CRUD on subscriber lists
- **Contacts** — Add, update, delete, and fetch contacts within a list
- **Tags** — List tags on a list and fetch tag details
- **Campaigns** — List, create, and fetch campaigns
- **Campaign Reports** — Per-campaign summary plus opened, clicked, bounced, complained, sent, and unsubscribed contacts
- **Automations** — List and fetch automation flows configured on the account

## Why Jentic

- **Setup:** Wiring EmailOctopus by hand means handling its API-key auth, threading list and campaign ids through the 2.0 paths, and mapping report endpoints yourself. Through Jentic you install once, import the EmailOctopus API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** EmailOctopus puts the list and campaign ids in the URL path (`/api/2.0/lists/{listId}/contacts`, `/api/2.0/campaigns/{campaignId}/reports/summary`), so a rule can pin your agent to one list or campaign. You choose the operations it may call, so creating campaigns is not included unless you add it.
- **Credential handling:** Your EmailOctopus API key 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 'add a contact to a list' or 'see who clicked a campaign', and Jentic returns the matching EmailOctopus operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Mailchimp API** — Mailchimp is the larger general-purpose email-marketing alternative to EmailOctopus
- **MailerLite API** — MailerLite is a similar small-team email-marketing platform with a comparable API surface
- **SendGrid Mail Send API** — SendGrid handles transactional email; EmailOctopus handles marketing campaigns and lists

## FAQ

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

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

EmailOctopus v2 uses an API key issued from the dashboard. Through Jentic, the key is stored encrypted in the vault and injected at execution time so the agent never sees the raw key in its prompt or logs.

### Can I see who clicked a specific campaign link?

Yes. GET `/api/2.0/campaigns/{campaignId}/reports/clicked` returns the contacts who clicked at least one link in the campaign. The same campaign-reports group exposes opened, bounced, complained, sent, and unsubscribed cohorts as separate endpoints.

### How do I tag a contact?

Apply tags by including a tags array on the contact when calling POST `/api/2.0/lists/{listId}/contacts` or PUT `/api/2.0/lists/{listId}/contacts/{contactId}.` Read tag membership for a list with GET `/api/2.0/lists/{listId}/tags` and GET `/api/2.0/lists/{listId}/tags/{tag}.`

### How do I create a campaign through EmailOctopus via Jentic?

Run the Jentic search query 'create an EmailOctopus campaign', load the input schema for POST `/api/2.0/campaigns`, then execute with the campaign name, subject, content, and target list ID. Jentic injects the API key at execution time.

### Does the EmailOctopus API expose automations?

Yes, but read-only. GET `/api/2.0/automations` lists configured automations and GET `/api/2.0/automations/{automationId}` fetches a single automation. Authoring and editing automations is currently a dashboard-only operation.

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

Yes. Because you run Jentic One yourself, your own rules decide which EmailOctopus operations and credentials the agent may use, so you can allow read-only report calls like GET `/api/2.0/campaigns/{campaignId}/reports/clicked` while withholding contact writes or campaign creation via POST `/api/2.0/campaigns.` Since EmailOctopus puts the list and campaign ids in the URL path, such as `/api/2.0/lists/{listId}/contacts`, a rule can pin the agent to a single list or campaign. The API key stays with your instance and is injected only when an allowed operation runs, so the agent never handles it directly.
