POST /transactions/:id/cosign
Completes a user-proposed screening-off SafeTx queued below the threshold: the backup key signs the transaction’ssafeTxHash, the server verifies the signature recovers to a distinct non-agent owner of that Safe, appends it, and triggers execution — relay-only, since the user’s signatures now meet the threshold and the agent signs nothing it didn’t screen.
This is the mirror image of POST /transactions/:id/sign, which completes an agent-proposed (pre-signed) transaction with the user’s primary signature.
The same transaction can always be completed in the Safe app instead — confirm with the backup key at app.safe.global and Zhentan’s sync worker reconciles the execution.
Request
Validation
- The transaction must be a queued SafeTx with a proposer signature and no terminal state
- The signature must recover to an owner of the Safe that is not the agent and has not already signed
- Ownership: authenticated calls must belong to the transaction’s Safe
