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

# Groovecm GrooveApps API

The groovecm.com mirror of the GrooveApps API exposes the GrooveDigital plugin integration layer - used by GroovePages, GrooveSell, and GrooveMail. Agents can register plugin integrations, invoke them by type or by integration ID, route Zapier-style webhook calls, and list installable components and active integrations. Authentication is OAuth 2.0 with the resource owner password grant.

## For AI agents

Register and trigger third-party plugin integrations on a GrooveDigital marketing account through the groovecm.com endpoint surface.

## Scope

Does not handle email composition, landing page editing, or storefront design - use for plugin integration registration and invocation on a GrooveDigital account only.

## Capabilities

- Register a plugin integration with POST `/groovedigital/plugins/add`
- Invoke 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 plugin integration with DELETE `/groovedigital/plugins/delete/{plugin_type}/{integration_id}`
- List installable plugin components and active integrations on the account

## Use cases

### Plugin Integration Lifecycle

Register, invoke, and remove plugin integrations on a GrooveDigital account. The agent uses POST `/groovedigital/plugins/add` to create the integration, `/groovedigital/plugins/call` to invoke it, and DELETE `/groovedigital/plugins/delete` to clean up. This is the full lifecycle exposed by the GrooveApps integration layer.

Example prompt: Call POST `/groovedigital/plugins/add`, store the returned integration_id, and verify it appears in GET `/groovedigital/plugins/integrations/list.`

### Webhook Routing via Zapier

Use a Groove account as the entry point for downstream Zapier zaps. The agent calls POST `/groovedigital/plugins/call/zapier/{integration_id}` to fire the configured zap, keeping orchestration centralised in Groove rather than scattered across services.

Example prompt: Trigger the Zap by calling POST `/groovedigital/plugins/call/zapier/{integration_id}` with the event payload.

### Configured Integration Inventory

List every configured integration on a Groove account for governance - useful before a security review or when reconciling against an internal catalogue. Agents call `/integrations/list` and `/components/list` to capture both active integrations and what was theoretically installable.

Example prompt: Call GET `/groovedigital/plugins/integrations/list`, format the result as a CSV, and email it to the integration owner.

### AI Agent Marketing Automation

An ops agent uses Jentic to manage Groove plugins on behalf of a marketing team - adding new integrations, invoking them, and removing ones the team no longer uses. The Jentic discovery layer means the agent does not need to read 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 with the plugin payload.

## 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 account
- **plugins/call** — Invoke configured plugins by type or integration id
- **plugins/delete** — Remove a configured 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 registration, 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 'register a plugin integration' or 'invoke a plugin on a GrooveDigital account', 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 (groove.cm)** — Same GrooveApps API mirrored under the groove.cm vendor domain.
- **Mailchimp Marketing API** — Email marketing platform commonly downstream of Groove plugin events.
- **Klaviyo API** — E-commerce messaging platform that's a frequent Groove integration target.

## FAQ

### What authentication does the GrooveApps API use?

OAuth 2.0 with the resource owner password grant against api.groovepages.com/auth/token, scoped to 'user' or 'admin'. Through Jentic, the credentials sit in your Jentic One instance and the bearer token is injected at call time so user passwords never enter the agent's context.

### Can I trigger a Zapier integration with this API?

Yes. POST `/groovedigital/plugins/call/zapier/{integration_id}` fires the Zap configured against that integration. The integration_id is returned by a prior POST `/groovedigital/plugins/add.`

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

The spec does not declare explicit rate limits - GrooveDigital enforces them at the account level. Production agents should retry 429 responses with exponential backoff and log Retry-After headers when present.

### How do I list configured integrations through Jentic?

Search Jentic for 'list configured Groove integrations', load the GET `/groovedigital/plugins/integrations/list` schema, and execute. Jentic injects the OAuth bearer token from the vault, so the agent only handles the response.

### Is the groovecm.com endpoint different from groove.cm?

No - it is the same GrooveApps API mirrored under a second vendor domain. Use whichever domain matches the user's Groove account; the path surface and auth scheme are identical.

### How do I remove an unused plugin integration?

Call DELETE `/groovedigital/plugins/delete/{plugin_type}/{integration_id}` with the plugin type and the integration_id. Verify removal by calling GET `/groovedigital/plugins/integrations/list` and confirming the integration is no longer present.

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

Yes. Because you self-host Jentic One, your own rules decide which GrooveApps operations and credentials the agent may use, so you can grant it read-only calls like GET `/groovedigital/plugins/integrations/list` while withholding destructive ones like DELETE `/groovedigital/plugins/delete/{plugin_type}/{integration_id}.` Since GrooveApps carries the plugin type and integration id in the URL path, a rule can pin the agent to a single integration_id, letting it invoke or trigger that one integration through `/groovedigital/plugins/call/{plugin_type}/{integration_id}` and nothing else. The OAuth credential is injected only for the operations you allow, so the agent never gets broader access than you granted.
