Reference · official service

Push API

Use the copyable address from Drel as the base capability. Replace placeholders locally; never publish a real key in documentation, bug reports or source code.

Endpoints

FormEndpointWhen to use it
Bark-compatible pathGET /<key>/<title>/<body>Simple shell calls with scalar query parameters.
Bark-compatible POSTPOST /<key>Form or JSON fields, while keeping the key in the path.
Portable JSONPOST /pushUse for structured parameters, including params and message types.
curl "https://api.drel.app/YOUR_KEY/Build%20complete/Open%20the%20report" -G \
  --data-urlencode "url=https://tools.example/release/42" \
  --data-urlencode "mode=immersive"
curl https://api.drel.app/push -H 'content-type: application/json' -d '{
  "deviceKey": "YOUR_KEY", "title": "Build complete",
  "body": "Open the report", "url": "https://tools.example/release/42",
  "mode": "immersive", "params": { "build": "42" }
}'

Stable fields

FieldPurposeNotes
title, body, subtitleNotification textRequired title/body for normal direct messages. Keep all content non-sensitive.
urlHTTPS destinationOpens in Drel after an explicit notification tap. Use a normal, publicly trusted HTTPS URL.
mode / displayPresentationnormal, modal, and immersive are supported. Aliases full and fullscreen map to immersive.
appId, route, paramsRegistered web-app launchUse JSON POST when nested params are needed. A route must match the registered app contract.
group / threadId, badge, soundOrganization and delivery optionsiOS notification settings and system policy remain authoritative.
icon, imageIn-app image metadataAn icon never replaces Drel’s iOS App Icon. Images must use HTTPS.
markdown, contentType, verificationCode, qrPayloadRich inbox contentUse the JSON endpoint for an explicit typed message contract.
copy, autoCopy, isArchive, id, revision, deleteInbox behaviorUse only where your user flow makes the result clear; do not use a push to perform a sensitive action.

Fields outside this table may exist for internal or experimental compatibility. Do not build production behavior around undocumented fields, critical-alert assumptions, volume overrides, or call-like presentation.

Responses, retries and delivery

A successful direct request returns a JSON result shaped like {"code":200,"attempted":1,"accepted":1,"expired":0,"message":"…"}. Errors use {"error":{"message":"…"}}. Field counts can change as delivery targets change, so clients should read the status and handle errors rather than parse prose.

Accepted is not displayed. It means Drel accepted the request for APNs delivery. A device may be offline, disabled for notifications, or subject to iOS delivery policy. Senders should use an idempotency/revision strategy, exponential backoff for transient failures, and avoid automatic duplicate retries.

No numeric rate or payload-size service-level guarantee is published for the official endpoint. Treat 4xx, 429 and 5xx as failures; keep URLs concise and URL-encode path/query values.

Key rotation and privacy

Reset a push address from Drel Settings when it may have leaked. Update every sender to the newly copied address; a previously reset address must be treated as invalid. The official service processes the message to deliver it and is not an end-to-end encrypted channel. See Privacy and Terms.