Four steps using OkHttp, Gson, and coroutines — no SDK, no boilerplate. Works on JVM, Spring Boot, Ktor, and Android.
Add OkHttp for HTTP, Gson for JSON, and Kotlin coroutines. These three libraries cover everything the GetSigned integration needs — no dedicated SDK required.
Exchange your client credentials for a bearer token. The token is valid for 3600 seconds — cache it in memory and refresh when it expires.
Upload the PDF as a multipart form request alongside signers and field coordinates. The API returns an envelope ID you use to send the document.
Calling /send dispatches the signing link. When the signer completes, GetSigned POSTs to your webhook. Verify the HMAC-SHA256 signature before processing.
Any Kotlin application that can make HTTP requests works with GetSigned — the API is plain REST. For server-side Kotlin, OkHttp works with Spring Boot, Ktor, Micronaut, or any JVM framework. For Android, OkHttp is standard. For multiplatform (KMP), you can use Ktor Client instead of OkHttp for a single codebase targeting JVM, Android, and iOS.
Wrap all OkHttp calls in withContext(Dispatchers.IO) to move blocking network I/O off the main dispatcher. OkHttp doesn't have a native coroutine API, but the withContext wrapper is idiomatic and sufficient. If you prefer a fully suspending HTTP client, Ktor Client (ktor-client-okhttp on JVM) provides suspend-native API calls and is a good alternative for new projects.
Yes. OkHttp is the standard HTTP client for Android. Add the dependency to your module's build.gradle.kts, wrap calls in Dispatchers.IO, and the integration works as shown. For Android specifically, store your client credentials in a server-side backend — never embed them in the APK. Your Android app should call your backend, which calls GetSigned, so credentials are never client-side.
Receive the raw request body as a ByteArray before any JSON deserialization — parsing first can alter whitespace and invalidate the signature. Extract the X-GetSigned-Signature header, compute HMAC-SHA256 of the raw bytes with your webhook secret using javax.crypto.Mac, hex-encode the result, and compare to the header value. Use a constant-time comparison (not equals()) to prevent timing attacks.
There is no dedicated Kotlin SDK — you use the REST API directly with standard HTTP libraries. This is intentional: it means there is no SDK to update, no dependency conflicts, and no abstraction layer between you and the API. OkHttp + Gson covers the full integration in under 100 lines of idiomatic Kotlin.
Related: Java guide · Node.js guide · Python guide · Webhook guide
Free tier — 25 envelopes per month. Full API access from day one.
Get free API keys →