Pylon Support Issues & Replies
When a customer pings your shared Slack channel or support inbox, the request lands in Pylon as an issue. Search issues by state, account or tag, read the full message thread, then reply, leave an internal note, reassign it to a teammate or team, or snooze it until the customer answers.
Connect this API to an AI agent Browse all specs
What you can do with Pylon Support Issues & Replies via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /issues/search |
searchIssues | Search issues by state, assignee, account, tag or date |
| GET | /issues |
listIssues | List issues created in a time window |
| POST | /issues |
createIssue | Open a new issue for a customer |
| GET | /issues/{id} |
getIssue | Get an issue by its id or number |
| PATCH | /issues/{id} |
updateIssue | Change an issue's state, assignee, team, tags or title |
| GET | /issues/{id}/messages |
getIssueMessages | Read the messages and notes on an issue |
| GET | /issue-statuses |
listIssueStatuses | List the issue states, including custom ones |
| GET | /users |
listUsers | List teammates and their user ids |
| GET | /teams |
listTeams | List support teams and their ids |
| GET | /tags |
listTags | List the tags that can be put on issues |
| GET | /macros |
listMacros | List saved reply macros |
| POST | /issues/{id}/reply |
replyToIssue | Reply to the customer on an issue |
| POST | /issues/{id}/note |
addInternalNote | Add an internal note only teammates can see |
| POST | /issues/{id}/snooze |
snoozeIssue | Snooze an issue until a given time |
Authentication
bearerAuth
Bearer token — sent as Authorization: Bearer <token>
A Pylon API token, sent as Authorization: Bearer <token>.
How to get a credential
- Sign in to Pylon as an Admin (only Admins can create tokens).
- Open Settings > Integrations & dev > API tokens and click Create API Token.
- Name it (e.g. VX Agents). Either pick a Role for the token, or choose Act as user or bot so replies are attributed to that user or bot.
- Click Create and copy the token; it is shown only once. Tokens do not expire.
Permissions used
Pylon tokens have no scopes; access follows the token's role.
| Role needs to allow | Operations |
|---|---|
| Viewing issues and workspace data | listIssues, searchIssues, getIssue, getIssueMessages, listIssueStatuses, listUsers, listTeams, listTags, listMacros |
| Working issues | createIssue, updateIssue, replyToIssue, addInternalNote, snoozeIssue |
Common errors
| Status | Meaning | Fix |
|---|---|---|
| 401 | Token missing or revoked; wrong_region_token means an EU token (pylon_api_eu_...) was sent to the US host |
Create a new token, or use the EU base URL https://api.eu.usepylon.com. |
| 403 | The token's role does not allow this action | Give the token (or the user it acts as) a role with access. |
| 400 | Invalid body, e.g. an unknown state slug or user id | Read the error message; look ids up with listIssueStatuses, listUsers or listTeams. |
| 429 | Per-endpoint limit (30, 120 or 300 requests per minute per organization) | Wait the seconds in Retry-After, then retry. |
Store the token as a bearer credential in VX Agents; never paste it into chat.
Usage guide
Setup
- Credential: a Pylon API token (Settings > Integrations & dev > API tokens, Admins only), stored as a bearer credential. Create it to act as a bot or teammate if replies should carry that name.
- EU tenants (tokens starting
pylon_api_eu_) must use the base URLhttps://api.eu.usepylon.com. - Worth pinning: your own
user_id(fromlistUsers) for notes and assignments.
Work the queue
searchIssueswith afilter, e.g. open issues for one account:{"operator": "and", "subfilters": [{"field": "state", "operator": "in", "values": ["new", "waiting_on_you"]}, {"field": "account_id", "operator": "equals", "value": "<id>"}]}. Fields includestate,assignee_id,team_id,account_id,tags,title(string_contains),created_at/updated_at/latest_message_activity_at(time_is_after,time_range). Page withcursor.listIssuesneedsstart_timeandend_time(created_at window, at most 365 days).getIssue(id or issue number), thengetIssueMessagesfor the thread.- Act, confirming with the user first for anything the customer sees or that changes the issue:
replyToIssuewithbody_htmlandmessage_id= theidof a customer-visible message from step 3. This is sent to the customer.addInternalNotewithbody_html(teammates only).updateIssuewithstate,assignee_id,team_idortags.tagsreplaces the whole list, so send the existing tags plus the new one.snoozeIssuewithsnooze_until(RFC 3339).
createIssueneedstitleandbody_html; addaccount_id,requester_emailorcontact_idto link the customer.
Good to know
- States:
new,waiting_on_you,waiting_on_customer,on_hold,closed, plus custom slugs fromlistIssueStatuses. - Ids come from
listUsers,listTeams,listTags(filter tags by name) andlistMacros(saved replies to reuse asbody_html). - Timestamps are RFC 3339 (
2026-10-22T09:00:00Z). - Limits are per endpoint and organization: 30, 120 or 300 requests per minute; on 429 wait
Retry-Afterseconds. - Deleting, merging and spam-marking issues are not part of this spec.
Source: Pylon API reference (https://docs.usepylon.com/pylon-docs/developer/api/api-reference), checked 2026-10-22.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Pylon Support Issues & Replies” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.