Authorizations
API Key
WebAuthn (Passkey)
Cryptographically signed (stamped) request to be passed in as a header. For more info, see
here.
Body
Enum options: ACTIVITY_TYPE_CREATE_API_KEYS_V2
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.
A list of API Keys.
parameters.apiKeys.apiKeyName
Human-readable name for an API Key.
parameters.apiKeys.publicKey
The public component of a cryptographic key pair used to sign messages and transactions.
parameters.apiKeys.curveType
Enum options: API_KEY_CURVE_P256, API_KEY_CURVE_SECP256K1, API_KEY_CURVE_ED25519
parameters.apiKeys.expirationSeconds
Optional window (in seconds) indicating how long the API Key should last.
Unique identifier for a given User.
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.createApiKeysIntentV2
The createApiKeysIntentV2 objectShow createApiKeysIntentV2 details
activity.intent.createApiKeysIntentV2.apiKeys
A list of API Keys.
activity.intent.createApiKeysIntentV2.apiKeys.apiKeyName
Human-readable name for an API Key.
activity.intent.createApiKeysIntentV2.apiKeys.publicKey
The public component of a cryptographic key pair used to sign messages and transactions.
activity.intent.createApiKeysIntentV2.apiKeys.curveType
curveType fieldEnum options: API_KEY_CURVE_P256, API_KEY_CURVE_SECP256K1, API_KEY_CURVE_ED25519
activity.intent.createApiKeysIntentV2.apiKeys.expirationSeconds
Optional window (in seconds) indicating how long the API Key should last.
activity.intent.createApiKeysIntentV2.userId
Unique identifier for a given User.
The result of the activity
activity.result.createApiKeysResult
The createApiKeysResult objectShow createApiKeysResult details
activity.result.createApiKeysResult.apiKeyIds
A list of API Key IDs.
activity.result.createApiKeysResult.apiKeyIds.item
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/create_api_keys \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_CREATE_API_KEYS_V2",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"apiKeys": [
{
"apiKeyName": "<string>",
"publicKey": "<string>",
"curveType": "<API_KEY_CURVE_P256>",
"expirationSeconds": "<string>"
}
],
"userId": "<string>"
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_CREATE_API_KEYS_V2",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"createApiKeysIntentV2": {
"apiKeys": [
{
"apiKeyName": "<string>",
"publicKey": "<string>",
"curveType": "<API_KEY_CURVE_P256>",
"expirationSeconds": "<string>"
}
],
"userId": "<string>"
}
},
"result": {
"createApiKeysResult": {
"apiKeyIds": [
"<string>"
]
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}