Documentation Index
Fetch the complete documentation index at: https://turnkey-0e7c1f5b-ethan-captcha-protection.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
API Key
WebAuthn (Passkey)
Cryptographically signed (stamped) request to be passed in as a header. For more info, see
here.
Cryptographically signed (stamped) request to be passed in as a header. For more info, see
here.
Body
Enum options: ACTIVITY_TYPE_OTP_LOGIN
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
Unique identifier for a given Organization.
The parameters object containing the specific intent data for this activity.
parameters.verificationToken
Signed JWT containing a unique id, expiry, verification type, contact
Client-side public key generated by the user, which will be conditionally added to org data based on the validity of the verification token
parameters.expirationSeconds
Expiration window (in seconds) indicating how long the Session is valid for. If not provided, a default of 15 minutes will be used.
parameters.invalidateExisting
Invalidate all other previously generated Login API keys
parameters.clientSignature
clientSignature field
parameters.clientSignature.publicKey
The public component of a cryptographic key pair used to create the signature.
parameters.clientSignature.scheme
Enum options: CLIENT_SIGNATURE_SCHEME_API_P256
parameters.clientSignature.message
The message that was signed.
parameters.clientSignature.signature
The cryptographic signature over the message.
Enable to have your activity generate and return App Proofs, enabling verifiability.
Response
A successful response returns the following fields:
The activity object containing type, intent, and result
Unique identifier for a given Activity object.
Unique identifier for a given Organization.
The intent of the activity
activity.intent.otpLoginIntent
The otpLoginIntent objectShow otpLoginIntent details
activity.intent.otpLoginIntent.verificationToken
Signed JWT containing a unique id, expiry, verification type, contact
activity.intent.otpLoginIntent.publicKey
Client-side public key generated by the user, which will be conditionally added to org data based on the validity of the verification token
activity.intent.otpLoginIntent.expirationSeconds
Expiration window (in seconds) indicating how long the Session is valid for. If not provided, a default of 15 minutes will be used.
activity.intent.otpLoginIntent.invalidateExisting
Invalidate all other previously generated Login API keys
activity.intent.otpLoginIntent.clientSignature
clientSignature fieldShow clientSignature details
activity.intent.otpLoginIntent.clientSignature.publicKey
The public component of a cryptographic key pair used to create the signature.
activity.intent.otpLoginIntent.clientSignature.scheme
scheme fieldEnum options: CLIENT_SIGNATURE_SCHEME_API_P256
activity.intent.otpLoginIntent.clientSignature.message
The message that was signed.
activity.intent.otpLoginIntent.clientSignature.signature
The cryptographic signature over the message.
The result of the activity
activity.result.otpLoginResult
The otpLoginResult objectShow otpLoginResult details
activity.result.otpLoginResult.session
Signed JWT containing an expiry, public key, session type, user id, and organization id
A list of objects representing a particular User’s approval or rejection of a Consensus request, including all relevant metadata.
An artifact verifying a User’s action.
Whether the activity can be approved.
Whether the activity can be rejected.
The last update timestamp.
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/otp_login \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_OTP_LOGIN",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"verificationToken": "<string>",
"publicKey": "<string>",
"expirationSeconds": "<string>",
"invalidateExisting": "<boolean>",
"clientSignature": {
"publicKey": "<string>",
"scheme": "<CLIENT_SIGNATURE_SCHEME_API_P256>",
"message": "<string>",
"signature": "<string>"
}
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_OTP_LOGIN",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"otpLoginIntent": {
"verificationToken": "<string>",
"publicKey": "<string>",
"expirationSeconds": "<string>",
"invalidateExisting": "<boolean>",
"clientSignature": {
"publicKey": "<string>",
"scheme": "<CLIENT_SIGNATURE_SCHEME_API_P256>",
"message": "<string>",
"signature": "<string>"
}
}
},
"result": {
"otpLoginResult": {
"session": "<string>"
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}