Test your integration
Prove the create, deliver, answer, and resume loop end to end before you point a real end-user at it, with a one-click sandbox, curl, and each delivery channel
You can verify the whole loop before writing much code. Start with the one-click
sandbox, then test the API, then each way your end-user can answer (app, web push,
Slack). You need a Partner-plan workspace and its API key from
Dashboard > Agent > Settings.
export PK="pk_xxx.sk_xxx"
export B="https://pushary.com/api/v1/server"1. The one-click sandbox
The fastest check, no code and no phone. Open Dashboard > Agent and use the
Send a test approval card. Click it, then click Answer it to open the real
decision page, approve or deny, and the card flips to Resolved. That is the entire
create to answer to resume loop.
2. The decisions API
# create a decision (async by default)
curl -s -X POST "$B/decisions" \
-H "Authorization: Bearer $PK" -H "Content-Type: application/json" \
-d '{"question":"Approve the $4,200 payout to Acme?","type":"confirm","externalId":"you-1","expiresInSeconds":3600}'
# the response includes decisionId and decisionPageUrl
# open decisionPageUrl in a browser, answer it, then read the outcome:
curl -s "$B/decisions/<decisionId>?wait=30" -H "Authorization: Bearer $PK"get with wait long-polls, so it returns the moment you answer. This is the same
resume path your integration uses when it does not take a webhook.
3. The connect page and web push
Web push is the no-app-store way for your end-user to get approvals. Mint a connect link, open it in a browser, turn on notifications, then send a decision.
# mint a one-time connect link for an end-user id
curl -s -X POST "$B/enroll" \
-H "Authorization: Bearer $PK" -H "Content-Type: application/json" \
-d '{"externalId":"you-1"}'
# the response includes universalLink: https://pushary.com/e/<token>- Open
https://pushary.com/e/<token>in Chrome (desktop or Android). You will see your workspace name and logo. - Click Enable browser notifications and allow them.
- Run the create from step 2 with
"externalId":"you-1". You should get a lock-screen push. Tap it to open the decision page and approve.
On iOS Safari, web push only works after Add to Home Screen. The app is the better path there.
4. The native app
Open the same https://pushary.com/e/<token> link on your phone. It deep-links into
the Pushary app (install it first if needed and re-open the link). After that,
decisions for that end-user arrive on your lock screen with Approve and Deny, and
select and input decisions render in the app.
5. Slack
Connect Slack from Dashboard > Integrations. You will be asked for the scopes that
let Pushary post to a channel and DM a person.
# posts to your connected channel with Approve / Deny buttons
curl -s -X POST "$B/decisions" \
-H "Authorization: Bearer $PK" -H "Content-Type: application/json" \
-d '{"question":"Approve deploy to production?","type":"confirm"}'
# DMs one person instead: pass their email (must be a member of your Slack)
curl -s -X POST "$B/decisions" \
-H "Authorization: Bearer $PK" -H "Content-Type: application/json" \
-d '{"question":"Approve deploy to production?","type":"confirm","email":"member@yourco.com"}'Click Approve or Deny on the Slack message and the decision resolves. If the email does not match a Slack user, delivery falls back to the shared channel.
What only a real device or account can confirm
The web-push subscribe and the actual lock-screen push need a real browser or phone (step 3 and 4). The Slack DM needs a live workspace with a matching member email (step 5). Everything server-side, including create, answer, durable poll, and the signed webhook, you can confirm with steps 1 and 2 alone.