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

# AppConnect V3

AppConnect V3 is a Constant Contact-aligned contacts and lists API exposing a small surface for syncing email subscribers and segment lists. The 10 endpoints cover contact CRUD on /contacts and list CRUD on /lists, with authentication via an Authorization header or x-api-key header. The API targets developers who need to push subscribers from a product backend into Constant Contact-style email marketing without integrating the wider Constant Contact platform.

## For AI agents

Create and update email contacts and lists so an agent can sync subscribers from a product backend into a Constant Contact-aligned email marketing list.

## Scope

Does not handle email sending, campaign creation, or template rendering - use for syncing contacts and lists only.

## Capabilities

- Create and update contacts via /contacts and `/contacts/{contact_id}`
- Manage email subscriber lists through /lists and `/lists/{list_id}`
- Look up an individual contact by ID for personalisation
- Bulk-list contacts with pagination for export jobs
- Toggle list membership by re-PUTing the contact record

## Use cases

### Product Sign-up to Email List Sync

Push newly registered product users into the marketing email list automatically by calling POST /contacts with the email and profile fields, then attaching the contact to the welcome-series list. This removes the daily CSV export-and-import that growth teams typically run when their product database lives separately from the email marketing tool.

Example prompt: On user registration, call POST /contacts with the email and name, then PUT the list membership to add them to the welcome-series list

### Subscriber Profile Update

Keep email marketing personalisation fresh by updating contact metadata whenever the source-of-truth changes upstream. PUT `/contacts/{contact_id}` accepts the updated profile and the list-membership endpoint reflects subscription changes immediately, removing the lag that drives outdated merge fields in marketing emails.

Example prompt: On profile update event, call PUT `/contacts/{contact_id}` with the new fields and confirm the response reflects the updated metadata

### List Membership Audit

Generate a weekly audit of which subscribers are on which lists by walking GET /lists and GET /contacts. The agent can compare list membership against the source-of-truth to catch drift - subscribers on a list they should not be on, or missing from a list they should be on - without manually exporting from the marketing UI.

Example prompt: List all lists via GET /lists, list contacts on each, and compare against the source-of-truth to flag drift in list membership

### Agent-Driven Subscriber Management

Let an AI agent add or remove subscribers from email lists in response to natural-language requests by exposing AppConnect operations through Jentic. The agent searches for the right operation, loads the schema, and executes - never holding the API key, which carries write access to the entire contacts list.

Example prompt: Search Jentic for 'add a contact to an email list', load the POST /contacts schema, and execute with the email from the user's chat message

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/contacts` | List contacts |
| POST | `/contacts` | Create a contact |
| GET | `/contacts/{contact_id}` | Fetch a specific contact |
| PUT | `/contacts/{contact_id}` | Update a contact |
| GET | `/lists` | List subscriber lists |
| POST | `/lists` | Create a list |
| GET | `/lists/{list_id}` | Fetch a list |

## Key resources

- **Contacts** — Create, list, fetch, and update email subscriber records
- **Lists** — Create, list, fetch, and update email subscriber lists

## AI readiness

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.

- **Score:** 75 / 100
- **Maturity:** AI-Ready
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 77 / 100
  - AI-Readiness & Agent Experience: 63 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 100 / 100
- **View full report:** https://jentic.com/apis/appconnectv3/appconnectv3/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

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

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring AppConnect V3 by hand means learning its API-key scheme against the l1.api.cc.email host and threading contact and list ids through its paths yourself. Through Jentic you install once, import the AppConnect V3 API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** AppConnect V3 puts contact and list ids in the URL path (`/contacts/{contact_id}`, `/lists/{list_id}`), so a rule can pin your agent to reading and updating specific contacts or lists. You choose the operations it may call, so creating contacts or lists is not included unless you add it.
- **Credential handling:** Your AppConnect V3 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 an email subscriber' or 'list email lists', and Jentic returns the matching contacts or lists operation with its input schema so the agent calls the right endpoint without studying the resource graph.

## Related APIs

- **Constant Contact API** — Constant Contact's full API covers campaigns, segments, and email sending beyond the AppConnect V3 contacts/lists subset
- **Mailchimp API** — Mailchimp offers a comprehensive marketing API across audience, campaigns, and automation
- **SendGrid Marketing Contacts API** — SendGrid Marketing Contacts API focuses on contact storage and segmentation for email sending

## FAQ

### What authentication does the AppConnect V3 API use?

API key in either the Authorization header or an x-api-key header. Through Jentic the API key is stored encrypted in the vault (your Jentic One instance) and never enters agent context - agents receive scoped access only.

### Can I add an email subscriber with the AppConnect V3 API?

Yes. POST /contacts creates a contact with email and profile fields. To attach the contact to a specific list, use PUT `/contacts/{contact_id}` with the list membership populated, or update the list directly via PUT `/lists/{list_id}.`

### What are the rate limits for the AppConnect V3 API?

The OpenAPI spec does not encode explicit rate limits. The underlying Constant Contact platform applies per-key throttling that returns HTTP 429 when exceeded - inspect response headers for live state and back off on 429.

### How do I add a contact to an email list through Jentic?

Run pip install jentic, then search 'add a contact to an email list'. Jentic returns POST /contacts with its input schema - load the schema, populate the email and list ID, and execute. The agent never sees the API key.

### How is AppConnect V3 different from the full Constant Contact API?

AppConnect V3 is a focused subset covering contacts and lists only - 10 endpoints rather than the full Constant Contact platform. Use it when subscriber sync is the only requirement; use the full Constant Contact API for campaigns, segments, and email sending.

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

Yes. Because you run your own self-hosted Jentic One instance, your own rules decide which AppConnect V3 operations and credentials the agent may use. Since contact and list ids sit in the URL path (`/contacts/{contact_id}`, `/lists/{list_id}`), you can pin the agent to reading and updating specific contacts or lists. You choose the operations it may call, so creating contacts or lists via POST /contacts or POST /lists is not included unless you add it.
