SDK architecture

- A user performs a request in their user-controlled wallet on the developer’s platform. For example, a user initiates a USDC transfer to an external wallet.
- The developer requests a user’s transaction through Circle’s Programmable Wallets RESTful APIs.
- Circle’s RESTful APIs return a response containing a challenge ID. The challenge must be completed to execute the requested transaction.
- The developer passes the challenge ID to the Wallets SDK, prompting users to input their PIN code to complete the challenge.
- The user completes the challenge by entering their PIN code or click the confirm/sign button on the Confirmation UIs, and the encrypted input is delivered to Circle’s SDK APIs.
- Circle delivers a callback notification to the developer (or the developer queries the corresponding GET endpoint for the given transaction) to receive status updates on the requested transaction.
- Upon completion of the request, the developer notifies the end-user in the developer’s application.