canonical: https://jentic.com/apis/oauth.vuepak.com/vuepak

# Oauth Vuepak Vuepak API

The Vuepak API exposes the multichannel outreach platform's address books, contacts, leads, and subscription endpoints over OAuth 2.0 authorization code flow. Connected applications can list and segment contacts, surface inbound leads created from Vuepak campaigns, and toggle CRM subscriptions on address books so Vuepak audiences stay in sync with downstream systems. It is intended for marketing operations teams who run Vuepak campaigns and need to push or pull audience data programmatically.

## For AI agents

List Vuepak contacts and leads, manage address book CRM subscriptions, and authenticate via OAuth 2.0 authorization code flow.

## Scope

Does not send emails or SMS, edit campaign content, or expose engagement events - use for OAuth-authenticated audience and lead retrieval and CRM subscription management only.

## Capabilities

- List Vuepak address books for the authenticated account
- Pull contacts and company contacts segmented inside Vuepak address books
- Surface inbound leads captured by Vuepak campaigns for downstream follow-up
- Subscribe an address book to a CRM target so contacts sync outward
- Unsubscribe an address book from a CRM target when a sync is retired
- Inspect the authenticated user's Vuepak profile via /me to confirm the active workspace

## Use cases

### Sync Vuepak leads into a CRM

Move inbound leads captured by Vuepak campaigns into a CRM by polling GET `/api/v1/leads` and forwarding new records to the CRM's create-lead endpoint. The Vuepak API returns lead records associated with the authenticated workspace, so revenue operations teams can keep Salesforce or HubSpot up to date without manual export. A simple poller wired to the OAuth token is enough to bridge the two systems.

Example prompt: Authenticate via `/api/v1/token`, call GET `/api/v1/leads` every 10 minutes, and post new leads into the CRM

### Manage Vuepak address book subscriptions

Programmatically subscribe and unsubscribe Vuepak address books from CRM destinations using POST `/api/v1/addressbooks/subscribe/{crm}` and POST `/api/v1/addressbooks/unsubscribe/{crmName}.` Marketing ops teams can wire this into onboarding scripts so a new product line provisions a fresh address book and CRM connection without manual clicks.

Example prompt: Call POST `/api/v1/addressbooks/subscribe/{crm}` for a new product address book, then list address books to verify the subscription is active

### Audience segmentation pull for analytics

Build segmentation reports by retrieving address books, contacts, and company contacts and joining them with engagement data from a warehouse. The Vuepak API exposes paginated GET endpoints for `/api/v1/contacts` and `/api/v1/contacts/company`, which lets a daily ETL job snapshot the Vuepak audience for downstream BI without scraping the UI.

Example prompt: Pull all pages of GET `/api/v1/contacts` and GET `/api/v1/contacts/company` nightly and load both into the warehouse for joined reporting

### AI agent integration via Jentic

A revenue agent searches Jentic for Vuepak lead retrieval, loads the GET `/api/v1/leads` schema, and runs the call after Jentic mints an OAuth access token via `/api/v1/token.` The agent then picks the freshest leads, summarises them, and either posts a Slack digest or hands them to a CRM agent. Jentic abstracts the OAuth dance so the agent code stays simple.

Example prompt: Use Jentic to search 'list vuepak leads', load GET `/api/v1/leads`, and execute it after Jentic acquires the OAuth token

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/oauth/authorize` | Initiate OAuth 2.0 authorization |
| POST | `/api/v1/token` | Obtain an access token |
| GET | `/api/v1/addressbooks` | List address books |
| GET | `/api/v1/contacts` | List contacts |
| GET | `/api/v1/leads` | List leads |
| POST | `/api/v1/addressbooks/subscribe/{crm}` | Subscribe an address book to a CRM |
| POST | `/api/v1/addressbooks/unsubscribe/{crmName}` | Unsubscribe an address book from a CRM |
| GET | `/me` | Get current user info |

## Key resources

- **Address Books** — List, subscribe, and unsubscribe address books from CRM targets
- **Contacts** — Retrieve contacts and company contacts in the workspace
- **Leads** — Retrieve inbound leads captured by Vuepak campaigns
- **Authentication** — OAuth 2.0 authorization code flow and token issuance
- **User** — Inspect the authenticated user via /me

## 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:** 74 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 62 / 100
  - AI-Readiness & Agent Experience: 55 / 100
  - Agent Usability: 94 / 100
  - Security: 90 / 100
  - AI Discoverability: 78 / 100
- **View full report:** https://jentic.com/apis/oauth.vuepak.com/vuepak/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 the Vuepak API by hand means running the OAuth authorization-code flow against oauth.vuepak.com, exchanging and refreshing tokens at POST `/api/v1/token`, attaching the bearer header, and handling retries yourself. Through Jentic you install once, import the Vuepak API from the API Directory, store the client credentials once, and your agent calls it.
- **Permission scoping:** Vuepak subscription targets travel as the {crm} value in the request, so scope this API by operation rather than by one CRM: limit the agent to the operations it needs, such as listing address books, contacts, and leads, and leave the subscribe and unsubscribe operations out unless you add them. You choose which operations it may call, so nothing beyond the allowed set runs.
- **Credential handling:** Your Vuepak client credentials and refresh token are stored once, encrypted, by your own Jentic One instance, and Jentic mints the access token and adds the bearer header at execution time. The raw secret never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list Vuepak leads' or 'subscribe an address book to a CRM', and Jentic returns the matching Vuepak operation with its input schema so the agent calls the right endpoint without reading the Vuepak documentation.

## Related APIs

- **HubSpot Marketing Emails API** — HubSpot's broader marketing and CRM platform - richer campaign and engagement APIs than Vuepak's surface
- **SendGrid API** — Pair Vuepak audience exports with SendGrid for transactional email delivery
- **Salesforce REST API** — Common CRM destination for Vuepak address book and lead sync

## FAQ

### What authentication does the Vuepak API use?

Vuepak uses OAuth 2.0 with the authorization code flow. The agent or app sends users to GET `/oauth/authorize`, then exchanges the code at POST `/api/v1/token` for an access token used as a bearer credential on the data endpoints. Through Jentic, the OAuth client secret and refresh token are held in the vault (your Jentic One instance) and injected at execution time.

### Can I export Vuepak leads with the API?

Yes. GET `/api/v1/leads` returns leads captured by the authenticated workspace's campaigns. Pair it with a poller or scheduled job to forward records to a CRM, and call /me first to confirm the OAuth token is still valid for the target workspace.

### Can I sync a Vuepak address book to my CRM through the API?

Yes. POST `/api/v1/addressbooks/subscribe/{crm}` subscribes a Vuepak address book to a CRM destination, and POST `/api/v1/addressbooks/unsubscribe/{crmName}` retires the subscription. Use GET `/api/v1/addressbooks` to enumerate the address books available for subscription.

### What are the rate limits for the Vuepak API?

The OpenAPI spec does not publish explicit rate limits. Vuepak controls quotas per workspace; check your account or contact Vuepak support for figures. Through Jentic, agents can pace calls to `/api/v1/contacts` and `/api/v1/leads` to stay within the workspace allowance.

### How do I list Vuepak contacts through Jentic?

Install the SDK with pip install jentic, search 'list vuepak contacts', load GET `/api/v1/contacts`, and execute it after Jentic obtains the OAuth access token via `/api/v1/token.` Jentic returns the JSON pages so the agent can paginate without dealing with the OAuth handshake itself.

### Does the Vuepak API expose campaign sending or content editing?

No. The published endpoints cover OAuth, address books, contacts, leads, and the authenticated user. Sending emails or SMS, editing campaign templates, and reading engagement events are not part of this surface - use the Vuepak UI or contact Vuepak for those flows.

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

Yes. Because your Jentic One instance is self-hosted, your own rules decide which Vuepak operations and credentials the agent may use. Scope this API by operation: allow only the reads it needs, such as GET `/api/v1/addressbooks`, GET `/api/v1/contacts`, and GET `/api/v1/leads`, and leave POST `/api/v1/addressbooks/subscribe/{crm}` and its unsubscribe counterpart out unless you add them. Since the subscription target travels as the {crm} value in each request, restricting the operation set is what keeps the agent from touching CRM subscriptions, so nothing beyond the allowed operations runs.
