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

# Groovehq Groove API

The Groove REST API exposes the Groove helpdesk's core resources - tickets, messages, customers, agents, mailboxes, folders, groups, and webhooks - for programmatic access. Agents can list and create tickets, change ticket state and assignment, post replies and notes, manage tags and mailbox routing, and read or update customer profiles by email. Note that this REST API is deprecated by Groove in favour of their GraphQL API, but it remains in service for existing integrations.

## For AI agents

Read, create, and triage Groove helpdesk tickets, post replies, and manage customers and agents through Groove's REST API.

## Scope

Does not handle live chat sessions, knowledge base content, or billing - use for helpdesk ticket, customer, agent, and mailbox operations only.

## Capabilities

- List and create helpdesk tickets via /tickets
- Read and change a ticket's state with GET/PUT `/tickets/{ticket_number}/state`
- Assign a ticket to an agent or group via `/tickets/{ticket_number}/assignee` and `/tickets/{ticket_number}/assigned_group`
- Post a reply or note to a ticket with POST `/tickets/{ticket_number}/messages`
- Tag tickets and move them between mailboxes
- Read and update customer records by email with /customers and `/customers/{customer_email}`
- List agents, mailboxes, and folders to route work appropriately

## Use cases

### Triage Inbound Tickets

Sort new tickets to the right agent and mailbox automatically. The agent calls GET /tickets to pull recent tickets, classifies them by content, then assigns each via PUT `/tickets/{ticket_number}/assignee`, sets a tag with `/tickets/{ticket_number}/tags`, and changes state via PUT `/tickets/{ticket_number}/state.` This replaces brittle inbox rules with a flexible classifier.

Example prompt: List recent tickets via GET /tickets, classify each by content, then call PUT `/tickets/{ticket_number}/assignee` with the chosen agent for each.

### AI-Drafted Replies

Generate a draft reply for an open ticket without sending it. The agent reads the conversation via GET `/tickets/{ticket_number}/messages`, drafts an answer using the customer record at `/customers/{customer_email}` for context, and posts it as a private note via POST `/tickets/{ticket_number}/messages` so a human reviews before reply.

Example prompt: Pull message history with GET `/tickets/{ticket_number}/messages`, draft a reply, then POST it as a private note to `/tickets/{ticket_number}/messages` for agent review.

### Mailbox Reorganisation

Move a ticket between mailboxes when product ownership shifts. POST `/tickets/{ticket_id}/change_mailbox/{mailbox_id}` reroutes a ticket to a different team. Combined with GET /mailboxes and GET /folders, an agent can reconcile misrouted tickets in bulk after a team reorg.

Example prompt: Find tickets matching a tag in the source mailbox, then call POST `/tickets/{ticket_id}/change_mailbox/{mailbox_id}` for each to move them to the new owning team.

### AI Agent Support Co-Pilot

A support co-pilot agent uses Jentic to act on Groove on behalf of an agent - closing duplicates, applying tags, and preparing canned replies. Jentic's intent search means the agent does not need to read Groove's REST docs to know which path corresponds to which action.

Example prompt: Search Jentic for 'reply to a Groove ticket', load the POST `/tickets/{ticket_number}/messages` schema, then execute it with the drafted message body and ticket number.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/tickets` | List helpdesk tickets |
| POST | `/tickets` | Create a ticket |
| GET | `/tickets/{ticket_number}` | Get a single ticket |
| PUT | `/tickets/{ticket_number}/state` | Change a ticket's state |
| PUT | `/tickets/{ticket_number}/assignee` | Assign a ticket to an agent |
| POST | `/tickets/{ticket_number}/messages` | Post a reply or note on a ticket |
| GET | `/customers/{customer_email}` | Get a customer by email |
| GET | `/mailboxes` | List mailboxes |

## Key resources

- **tickets** — List, create, read, and modify helpdesk tickets, including state, assignee, and tags
- **messages** — Read messages and post replies or notes on tickets
- **customers** — Read and update customer records keyed by email
- **agents** — List support agents and view individual agent profiles
- **mailboxes** — List shared inboxes used to organise tickets
- **folders** — List ticket folders for navigation and reporting

## Why Jentic

- **Setup:** Wiring the Groove API by hand means handling its bearer auth against api.groovehq.com and managing pagination and retries across tickets, customers, agents, and mailboxes yourself. Through Jentic you install once, import Groove from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Groove puts the ticket number in the URL path (`/tickets/{ticket_number}/...`), so a rule can pin your agent to one ticket: it can reply to that ticket and change its state or assignee and nothing else. You choose the operations it may call, so a broad customer lookup or new-ticket creation is not included unless you add it.
- **Credential handling:** Your Groove bearer token 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 'reply to a Groove ticket' or 'assign a ticket to an agent', and Jentic returns the matching Groove operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Zendesk Support API** — Larger helpdesk platform with broader integrations and an active SDK ecosystem.
- **Freshdesk API** — SMB-friendly helpdesk with similar resource model.
- **HubSpot CRM Contacts** — CRM where Groove customer records are typically reconciled.

## FAQ

### What authentication does the Groove API use?

Groove uses an HTTP bearer token issued from the Groove admin panel; it can also be passed as the access_token query parameter. Through Jentic, the token sits encrypted in your Jentic One instance and the executor injects the Authorization: Bearer header at call time.

### Can I post a reply to a Groove ticket via the API?

Yes. POST `/tickets/{ticket_number}/messages` accepts a message body and posts it on the ticket as either a public reply or an internal note. The agent identity comes from the bearer token holder unless the payload specifies a different agent the token can act for.

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

The OpenAPI spec does not publish explicit rate limits - Groove enforces them at the account level. Production agents should retry on 429 with backoff and surface failures to the support workflow rather than silently dropping.

### How do I find a Groove customer by email through Jentic?

Search Jentic for 'find a Groove customer by email', load the GET `/customers/{customer_email}` schema, and execute with the email as the path parameter. Jentic injects the bearer token from the vault.

### Is this REST API deprecated?

Yes - Groove notes the REST API is deprecated in favour of their GraphQL API, but it remains in service for existing integrations. New builds aiming for longevity should plan to move to GraphQL once supported by Jentic.

### Can I move a ticket between mailboxes with the API?

Yes. POST `/tickets/{ticket_id}/change_mailbox/{mailbox_id}` moves a ticket to a different mailbox. List mailboxes first via GET /mailboxes to get a valid mailbox_id.

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

Yes. Jentic One is self-hosted by you, so your own rules decide which Groove operations and credentials the agent may use. Because Groove puts the ticket number in the URL path, such as `/tickets/{ticket_number}/messages` and `/tickets/{ticket_number}/state`, you can pin the agent to a single ticket so it can post a reply and change that ticket's state or assignee and nothing else. Operations you do not grant, such as a broad customer lookup on /customers or creating a new ticket with POST /tickets, stay off limits until you add them.
