Authorizations
Cryptographically signed (stamped) request to be passed in as a header. For more info, see
here.
Body
Enum options: ACTIVITY_TYPE_STAMP_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.
Client-side public key generated by the user, which will be conditionally added to org data based on the passkey stamp associated with this request
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
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.stampLoginIntent
The stampLoginIntent objectShow stampLoginIntent details
activity.intent.stampLoginIntent.publicKey
Client-side public key generated by the user, which will be conditionally added to org data based on the passkey stamp associated with this request
activity.intent.stampLoginIntent.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.stampLoginIntent.invalidateExisting
Invalidate all other previously generated Login API keys
The result of the activity
activity.result.stampLoginResult
The stampLoginResult objectShow stampLoginResult details
activity.result.stampLoginResult.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/stamp_login \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_STAMP_LOGIN",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"publicKey": "<string>",
"expirationSeconds": "<string>",
"invalidateExisting": "<boolean>"
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_STAMP_LOGIN",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"stampLoginIntent": {
"publicKey": "<string>",
"expirationSeconds": "<string>",
"invalidateExisting": "<boolean>"
}
},
"result": {
"stampLoginResult": {
"session": "<string>"
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}