Body Parameters
Description of why you’re requesting a signature. Shown to the user in the UIP app.Example:
"Sign Terms of Service" or "Acknowledge Privacy Policy"The content or description of what the user is signing. This is the actual agreement text or reference.Example:
"I agree to the Terms of Service version 2.1" or "I acknowledge receipt of the employee handbook"Example Request
Response (200 OK)
Unique identifier for this session. Use this to poll for results.
ISO 8601 timestamp when the session expires (5 minutes from creation).
Base64-encoded PNG data URI of the QR code. Display this to desktop users. The QR code encodes
https://www.uip.id/{session_id}.Implementation Flow
Display QR Code or Deep Link
Desktop: show the
qr_code image. Mobile: show an “Open UIP” button linking to https://www.uip.id/{session_id}No webhooks needed. The Sign API uses simple polling. No redirect URIs, no code exchange.
Best Practices
Clear Intent
Always provide a clear, user-friendly intent message explaining what they’re signing
Specific Information
Include version numbers and dates in signature_information for legal clarity
Handle Expiration
Sessions expire after 5 minutes. Implement retry logic or allow users to generate a new code
Save Audit IDs
Always save the audit_id from completed responses for permanent proof and compliance
Common Use Cases
Terms of Service
Terms of Service
Request users to sign your TOS with biometric verification
Privacy Policy
Privacy Policy
Get user consent for privacy policies with cryptographic proof
Employee Handbook
Employee Handbook
Require employees to acknowledge receipt and understanding
Code of Conduct
Code of Conduct
Get attestations for codes of conduct or ethical guidelines
Errors
See the Error Handling Guide for comprehensive error handling strategies. Possible error codes:auth/missing-api-key- No API key provided in Authorization headerauth/invalid-api-key- Invalid API keyauth/revoked-api-key- API key has been revokedauth/business-archived- Business account has been archivedrequest/invalid-payload- Request payload is invalid or missing required fieldspayment/insufficient-funds- Insufficient account balanceresource/not-found- Session not found (GET endpoint)internal/server-error- Failed to create or retrieve session