Support tickets
The support command (aliases: tickets) and ticket (singular) mirror
the /support and /support/<ticket_id> pages. From the terminal
you can list every ticket on the account, drill into one with its full
reply thread, file a new ticket with the same category + priority
taxonomy as the page, post a reply, and close a ticket.
Backed by /api/v1/app/tickets/*. No subscription or balance preflight
runs on these commands — support is free for every account regardless of
plan state.
Quick start
# File a ticket
splashify support create \
--subject "Broadcast stuck at 80%" \
--category bug \
--priority high \
--message "Broadcast 7a32… hasn't moved past 80% for an hour."
# Track it
splashify support # list
splashify ticket <ticket_id> # show + replies
splashify ticket <ticket_id> reply --message "Trying that now…"
splashify ticket <ticket_id> closeCommand reference
splashify support — list
splashify support # default: all open + recently closed
splashify support list # alias
splashify support list --status open
splashify support list --status closed
splashify support list --priority urgent
splashify support list --category bug| Backed by | GET /api/v1/app/tickets |
|---|
Filters are server-side. Response shape:
{
"success": true,
"tickets": [
{
"ticket_id": "uuid",
"subject": "Broadcast stuck at 80%",
"category": "bug", // bug | billing | feature_request | account | general
"priority": "high", // low | medium | high | urgent
"status": "open", // open | replied | closed
"created_at": "2026-05-20T14:00:00Z",
"updated_at": "2026-05-20T15:30:00Z"
}
]
}splashify ticket <ticket_id> — show a ticket + thread
splashify ticket 7a32bce6-…| Backed by | GET /api/v1/app/tickets/:ticket_id |
|---|
Returns the ticket row plus the full message thread (initial message + every reply, ordered oldest-first).
splashify support create — file a new ticket
splashify support create \
--subject "Wallet didn't refresh after recharge" \
--category billing \
--priority medium \
--message "Recharged ₹5000 30 min ago, wallet still shows old balance."| Backed by | POST /api/v1/app/tickets |
|---|
| Flag | Required | Notes |
|---|---|---|
--subject | yes | One-line summary |
--message | yes | Full description of the issue (Markdown-friendly) |
--category | yes | bug | billing | feature_request | account | general |
--priority | no | low | medium | high | urgent. Default: medium |
Returns the new ticket_id. Support sees the ticket immediately; the
reply SLA depends on your plan.
splashify ticket <id> reply — post a reply
splashify ticket <ticket_id> reply --message "Trying that now…"
splashify ticket <ticket_id> reply --file ./reply.md # body from a file| Backed by | POST /api/v1/app/tickets/:ticket_id/reply |
|---|
Returns the new reply row. The ticket’s status flips to replied until
support comes back.
splashify ticket <id> close — close
splashify ticket <ticket_id> close| Backed by | POST /api/v1/app/tickets/:ticket_id/close |
|---|
Marks the ticket closed. You can still view it; replies on a closed
ticket re-open it (closed → open).
Common workflows
File a ticket from a shell script
splashify support create \
--subject "Auto-monitor: broadcast $BID stuck" \
--category bug \
--priority high \
--message "Detected by daily monitor at $(date -u). $(splashify broadcast "$BID" | jq -c .)"Watch every open ticket
splashify support list --status open | \
jq '.tickets[] | {ticket_id, subject, priority, updated_at}'Triage by priority
splashify support | \
jq '.tickets | group_by(.priority) | map({priority: .[0].priority, count: length}) | sort_by(.priority)'Auto-close stale tickets (no reply in 30+ days)
CUTOFF=$(date -u -v-30d '+%Y-%m-%dT%H:%M:%SZ') # macOS
# CUTOFF=$(date -u -d '30 days ago' '+%Y-%m-%dT%H:%M:%SZ') # linux
splashify support list --status open | \
jq -r --arg c "$CUTOFF" '.tickets[] | select(.updated_at < $c) | .ticket_id' | \
xargs -I{} splashify ticket {} closeReply with a Markdown file
splashify ticket <id> reply --file ./long-reply.mdThe backend accepts any text — Markdown renders correctly in the support dashboard.
Troubleshooting
“Invalid category” — must be one of the five canonical values
(bug, billing, feature_request, account, general). The CLI
validates client-side before the round-trip.
“Invalid priority” — must be low, medium, high, or urgent.
emergency / critical are not accepted — use urgent for the highest
tier.
Reply 404s with “Ticket not found” — the ticket_id doesn’t belong to
your account (or it was deleted by support after policy violations).
Run splashify support to refresh.
close returns success but ticket reopens — that’s by design: any
new reply after close flips the status back to open. To “really
close” a ticket, archive it from the app’s support dashboard (no CLI
equivalent — archive is admin-only).
See also
splashify activity-logs— every action taken on the account, useful when filing bug reports.splashify api— for any future support-related endpoints not yet wrapped.