canonical: https://jentic.com/apis/groove.cm/groove-cm

# Groove Cm GrooveApps API

GrooveApps is the integrations layer for the GrooveDigital marketing suite (GroovePages, GrooveSell, GrooveMail). The API is small and integration-focused: it lets agents add a plugin integration to a Groove account, call configured plugin types with or without an integration ID, list available plugin components and active integrations, and route Zapier-style webhook calls. Auth is OAuth 2.0 with the resource owner password grant, scoped to user or admin.

## For AI agents

Add and invoke third-party plugin integrations on a GrooveDigital marketing account, including Zapier-routed webhooks.

## Scope

Does not handle email composition, page editing, or sales funnel design - use for plugin integration management and invocation on a GrooveDigital account only.

## Capabilities

- Add a plugin integration to a Groove account with POST `/groovedigital/plugins/add`
- Call any configured plugin type with `/groovedigital/plugins/call/{plugin_type}`
- Invoke a specific integration by id with `/groovedigital/plugins/call/{plugin_type}/{integration_id}`
- Trigger Zapier integrations with POST `/groovedigital/plugins/call/zapier/{integration_id}`
- Delete a configured plugin integration with DELETE `/groovedigital/plugins/delete/{plugin_type}/{integration_id}`
- List installable plugin components via GET `/groovedigital/plugins/components/list`
- List active plugin integrations on the account with GET `/groovedigital/plugins/integrations/list`

## Use cases

### Wire Up a Zapier Trigger

Connect a GrooveDigital event flow to a Zapier zap. The agent calls POST `/groovedigital/plugins/add` to register the integration, retrieves the integration_id, and uses POST `/groovedigital/plugins/call/zapier/{integration_id}` when the Groove side wants to invoke the zap. This pattern keeps Zap configuration inside the Groove account rather than fragmented.

Example prompt: Call POST `/groovedigital/plugins/add` with the Zapier plugin payload, capture the integration_id, then call POST `/groovedigital/plugins/call/zapier/{integration_id}` on the next event.

### Invoke an Existing Plugin

Trigger an already-configured plugin from outside Groove. POST or GET `/groovedigital/plugins/call/{plugin_type}/{integration_id}` executes the plugin with the supplied payload. Useful when an external system wants to push an event into Groove's plugin chain without owning a Groove session.

Example prompt: Call POST `/groovedigital/plugins/call/{plugin_type}/{integration_id}` with the payload required by the plugin and confirm a 2xx response.

### Audit Configured Integrations

Periodically list every configured plugin integration and the available plugin components - useful for an admin dashboard that wants to surface stale, broken, or unauthorised integrations. The list endpoints return enough metadata for an agent to flag drift.

Example prompt: Call GET `/groovedigital/plugins/integrations/list`, compare it against an internal allowlist, and DELETE any plugin integration not on the allowlist.

### AI Agent Marketing Stack Operator

An ops agent manages the marketing tool stack and reaches Groove through Jentic when a user asks 'connect Groove to Zapier' or 'turn off the unused Mailchimp plugin in Groove'. The agent searches for the right operation, loads its schema, and executes the call without browsing the GrooveApps OpenAPI spec by hand.

Example prompt: Search Jentic for 'add a Groove plugin integration', load the POST `/groovedigital/plugins/add` schema, and execute it with the plugin configuration supplied by the user.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/groovedigital/plugins/add` | Register a plugin integration |
| POST | `/groovedigital/plugins/call/{plugin_type}` | Call a plugin by type |
| POST | `/groovedigital/plugins/call/{plugin_type}/{integration_id}` | Call a plugin integration by id |
| POST | `/groovedigital/plugins/call/zapier/{integration_id}` | Trigger a Zapier integration |
| DELETE | `/groovedigital/plugins/delete/{plugin_type}/{integration_id}` | Delete a plugin integration |
| GET | `/groovedigital/plugins/components/list` | List installable plugin components |
| GET | `/groovedigital/plugins/integrations/list` | List active plugin integrations |

## Key resources

- **plugins/add** — Register a new plugin integration on the Groove account
- **plugins/call** — Invoke configured plugin integrations by type or by integration id
- **plugins/delete** — Remove a configured plugin integration
- **plugins/components/list** — List installable plugin components
- **plugins/integrations/list** — List active plugin integrations on the account

## Why Jentic

- **Setup:** Wiring the GrooveApps API by hand means running its OAuth2 password flow, choosing the api.groovepages.com host over the SwaggerHub mock servers, and mapping the plugin add, call, and delete endpoints yourself. Through Jentic you install once, import the GrooveApps API from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** GrooveApps puts the plugin type and integration id in the URL path (`/groovedigital/plugins/call/{plugin_type}/{integration_id}`), so a rule can pin your agent to one integration: it can invoke that integration and nothing else. You choose the operations it may call, so ones like deleting a plugin integration are not included unless you add them.
- **Credential handling:** Your GrooveApps OAuth2 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 'invoke a plugin integration' or 'list available plugin components', and Jentic returns the matching GrooveApps operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **GrooveApps API (groovecm.com)** — Same GrooveApps API published under the groovecm.com vendor domain.
- **Mailchimp Marketing API** — Email marketing platform - common downstream destination for Groove plugin events.
- **Klaviyo API** — Customer messaging platform commonly wired to Groove via plugins.

## FAQ

### What authentication does the GrooveApps API use?

GrooveApps uses OAuth 2.0 with the resource owner password grant (token endpoint at api.groovepages.com/auth/token), with 'user' and 'admin' scopes. Through Jentic, the credentials are stored encrypted in your Jentic One instance and the bearer token is injected on each request - raw passwords never enter the agent's context.

### Can I trigger a Zapier integration through the GrooveApps API?

Yes. POST `/groovedigital/plugins/call/zapier/{integration_id}` fires the Zap registered against that integration_id. The integration_id comes from a prior POST `/groovedigital/plugins/add` response.

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

The OpenAPI spec does not publish explicit rate limits - GrooveDigital enforces them at the account level. Production agents should retry on 429 with backoff and log the response body in case it carries a Retry-After hint.

### How do I add a plugin integration through Jentic?

Search Jentic for 'add a Groove plugin integration', load the POST `/groovedigital/plugins/add` schema, then execute with the plugin configuration. Jentic injects the OAuth bearer token from the vault, so the agent only supplies the plugin payload.

### Is the GrooveApps API free?

Access depends on the underlying GrooveDigital subscription tier. The API itself does not publish a separate price. Check the user's Groove plan for plugin and integration entitlements.

### How do I list every configured integration on a Groove account?

GET `/groovedigital/plugins/integrations/list` returns the active integrations on the authenticated account. Pair it with GET `/groovedigital/plugins/components/list` to know what plugin types are installable in the first place.

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

Yes. Because your Jentic One instance is self-hosted, your own rules decide which GrooveApps operations and credentials the agent may use. Since the plugin type and integration id sit in the URL path (`/groovedigital/plugins/call/{plugin_type}/{integration_id}`), you can pin the agent to a single integration so it invokes that one and nothing else. You pick the operations it may call, so destructive ones like DELETE `/groovedigital/plugins/delete/{plugin_type}/{integration_id}` stay out of reach unless you explicitly grant them.
