WASync · Developers

Revocation timing

Nothing is cached in the credential. Revoking a key takes effect on the very next call.

Scopes and the reachable connection list are resolved live, on every request. Nothing about a credential is cached in the credential itself and nothing has to be refreshed.

What that buys you

Revocation is immediate. Delete a key and the next call using it gets 401 invalid_key. There is no propagation window, no token that stays valid until it expires, and no cache to wait out. If a key is in a log you can pasted into a ticket, revoking it now is genuinely now.

Narrowing is immediate too. Remove a scope from an existing key and the next call that needed it gets 403 insufficient_scope. You do not have to reissue the key to tighten it.

A new connection is visible immediately. A connection you just created shows up on the very next GET /connections. There is nothing to refresh after a provisioning step.

OAuth tokens

An OAuth access_token is the one thing with a lifetime of its own: 15 minutes. Its scopes and connection list are still resolved live, so revoking the grant stops it reaching anything immediately — but the token string itself remains syntactically valid until it expires.

refresh_token lives 30 days and rotates on use. Persist the new one atomically and serialise refreshes across workers: two workers refreshing at once will invalidate each other, and the symptom is an integration that logs out at random under load.

Webhook secrets

Rotation has no overlap window. POST /webhook/rotate issues a new secret and the old one stops verifying immediately. Deploy the new secret promptly — the delivery retry policy (3 attempts: immediate, 500 ms, 1 s) covers a rollout measured in seconds, not hours, and anything dropped in between has to be picked up by your reconciliation poll.

If you think a credential leaked

Revoke it at https://developers.wasync.app/keys. It stops working on the next call.
Create a replacement with the narrowest scopes that still work.
Rotate the webhook secret if the leak could have exposed it — GET /webhook never returns it, so a leak means it came from your side.
Read back GET /messages over the affected window to see what was sent while the credential was out.

Support is written-only: email or chat.

On this page