turnkeyActivityId and a status indicating whether additional approval is needed.
Braid uses Turnkey to manage signing flows, but you do not need a relationship with Turnkey to sign approvals.
When approvals happen
- Strategy updates (
PATCH /v2/portfolio-wallets/{id}/strategy): returnsstatus: pending_approvalwhen the activity requires approval. - Withdrawals (
POST /v2/portfolio-wallets/{id}/withdraw): creates a withdrawal inpending_approvaland returns aturnkeyActivityId.
Approval flow
- Call the strategy update or withdrawal endpoint.
- Capture the
turnkeyActivityIdfrom the response.turnkeyActivityIdis your tracking id for the approval step. Store it so you can query Turnkey directly or reconcile approval events in your system. - Approve the activity in Turnkey (your signing flow, quorum, or policy).
- Once approved, the activity is kicked off and processing continues automatically.
Turnkey approval flow in detail
Our withdrawals endpoint returns aturnkeyActivityId. In Turnkey’s API this is the activityId you’ll query, and the activity’s fingerprint is what you submit to the approval endpoint.
Customer-side approval example (Turnkey SDK)
This example uses Turnkey’s server-side SDK to fetch the activity fingerprint and submit an approval vote.Node
activity.status: ACTIVITY_STATUS_CONSENSUS_NEEDED, additional approvals (votes) are required per your Turnkey policy/quorum. You can keep polling getActivity until the underlying activity is approved, or subscribe to Turnkey webhooks.
Status updates
Use these events to monitor progress:portfolio_wallet.strategy.status_changedportfolio_wallet.withdrawal.status_changedportfolio_wallet.withdrawal.payout.status_changed
failed with a failureReason.
