Ping

API Endpoints Reference

Complete reference for all Ping API endpoints.


Base URL

https://ping-api-production.up.railway.app

Webhook (No Auth Required)

Send Notification

POST /v1/send/{token}
Content-Type: application/json

Request Body:

JSON
{
  "title": "Required title",
  "body": "Optional body text",
  "priority": "normal",
  "callback_url": "https://your-server.com/callback",
  "actions": [
    {"type": "url", "label": "Button Text", "value": "https://example.com"}
  ]
}

Preview

Required title

just now
Optional body text

Response:

JSON
{"ok": true, "id": "msg_xxxxxxxxxxxx", "muted": false}

Callback Polling (Token Auth)

Get Callback Result

GET /v1/callback/{token}/{message_id}

Response (pending):

JSON
{"status": "pending"}

Response (submitted):

JSON
{
  "status": "submitted",
  "result": {
    "message_id": "msg_xxx",
    "channel_id": "ch_xxx",
    "timestamp": "2026-01-13T15:30:00Z",
    "triggered_by": "approve",
    "responses": {}
  },
  "submitted_at": "2026-01-13T15:30:00Z"
}

Authentication

EndpointMethodDescription
/v1/auth/applePOSTSign in with Apple
/v1/auth/refreshPOSTRefresh session
/v1/auth/logoutPOSTSign out
/v1/auth/logout-allPOSTSign out all devices
/v1/auth/meGETGet current user
/v1/auth/userDELETEDelete account and all data

API Keys

EndpointMethodDescription
/v1/keysGETList all API keys
/v1/keysPOSTCreate new API key
/v1/keys/:idDELETERevoke API key

Devices

EndpointMethodDescription
/v1/devicesPOSTRegister device
/v1/devices/:idPATCHUpdate push token

Channels

EndpointMethodDescription
/v1/channelsGETList channels
/v1/channelsPOSTCreate channel
/v1/channels/:idGETGet channel
/v1/channels/:idPATCHUpdate channel
/v1/channels/:idDELETEDelete channel
/v1/channels/:id/regeneratePOSTRegenerate webhook token
/v1/channels/:id/secretGETGet webhook signature secret
/v1/channels/:id/secret/rotatePOSTRotate webhook signature secret

Create Channel

POST /v1/channels
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Deploy Alerts",
  "icon": "rocket",
  "color": "#3B82F6"
}

Update Channel

PATCH /v1/channels/:id
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "New Name",
  "muted_until": "2026-01-20T00:00:00Z"
}

Messages

EndpointMethodDescription
/v1/messagesGETGet messages
/v1/messages/:idDELETEDelete message

Get Messages

GET /v1/messages?channel_id=ch_xxx&limit=50&offset=0
Authorization: Bearer <token>

Folders

EndpointMethodDescription
/v1/foldersGETList all folders
/v1/foldersPOSTCreate folder
/v1/folders/:idPATCHUpdate folder
/v1/folders/:idDELETEDelete folder
/v1/folders/reorderPOSTReorder folders

Pins

EndpointMethodDescription
/v1/pinsGETGet pinned channels
/v1/pinsPOSTPin channel
/v1/pinsDELETEUnpin channel
/v1/pins/reorderPOSTReorder pins

Subscriptions

EndpointMethodDescription
/v1/subscriptionsGETGet user's subscription & plan
/v1/subscriptions/apple/verifyPOSTVerify Apple IAP transaction
/v1/subscriptions/apple/webhookPOSTApp Store Server Notifications

Signature Verification (Public)

EndpointMethodDescription
/v1/verify/docsGETSignature verification documentation
/v1/verify/generatePOSTGenerate a test signature
/v1/verify/signaturePOSTVerify a signature

Webhook Transformers

EndpointMethodDescription
/v1/webhook/railway/:tokenPOSTRailway deployment webhook
/v1/webhook/github/:tokenPOSTGitHub Actions/push webhook
/v1/webhook/vercel/:tokenPOSTVercel deployment webhook

Error Responses

All endpoints return errors in this format:

JSON
{
  "error": "error_code",
  "message": "Human-readable description"
}
Error CodeHTTP StatusDescription
invalid_json400Request body isn't valid JSON
invalid_payload400Missing required fields or invalid values
invalid_token401Invalid or missing authentication
forbidden403No permission for this action
not_found404Resource not found
rate_limited429Too many requests
internal_error500Server error