Activities
- Overview
- Create API Keys
- Create Authenticators
- Create Invitations
- Create Oauth Providers
- Create Policies
- Create Policy
- Create Private Key Tag
- Create Private Keys
- Create Read Only Session
- Create Read Write Session
- Create Sub-Organization
- Create User Tag
- Create Users
- Create Wallet
- Create Wallet Accounts
- Delete API Keys
- Delete Authenticators
- Delete Invitation
- Delete Oauth Providers
- Delete Policy
- Delete Private Key Tags
- Delete Private Keys
- Delete Sub Organization
- Delete User Tags
- Delete Users
- Delete Wallets
- Export Private Key
- Export Wallet
- Export Wallet Account
- Import Private Key
- Import Wallet
- Init Email Recovery
- Init Import Private Key
- Init Import Wallet
- Init OTP auth
- Oauth
- OTP auth
- Perform Email Auth
- Recover a user
- Remove Organization Feature
- Set Organization Feature
- Sign Raw Payload
- Sign Raw Payloads
- Sign Transaction
- Update Policy
- Update Private Key Tag
- Update Root Quorum
- Update User
- Update User Tag
- Update Wallet
Queries
- Overview
- Get Activity
- Get API key
- Get Authenticator
- Get Authenticators
- Get Configs
- Get Oauth providers
- Get Policy
- Get Private Key
- Get Suborgs
- Get User
- Get Verified Suborgs
- Get Wallet
- Get Wallet Account
- List Activities
- List Policies
- List Private Key Tags
- List Private Keys
- List User Tags
- List Users
- List Wallets
- List Wallets Accounts
- Who am I?
Init OTP auth
Initiate an OTP auth activity
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/init_otp_auth \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <YOUR_API_KEY.YOUR_API_SECRET>" \
--data '{
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"timestampMs": "<string> (e.g., 1745474677471)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g., 1745474677471)",
"result": {
"activity": {
"type": "<string>",
"intent": {
"initOtpAuthIntent": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
},
"result": {
"initOtpAuthResult": {
"otpId": "<string>"
}
}
}
}
}
}
Authorizations
Body
Enum options: ACTIVITY_TYPE_INIT_OTP_AUTH
Timestamp (in milliseconds) of the request, used to verify liveness of user requests.
Unique identifier for a given Organization.
parameters field
emailCustomization field
A URL pointing to a logo in PNG format. Note this logo will be resized to fit into 340px x 124px.
A template for the URL to be used in a magic link button, e.g. https://dapp.xyz/%s
. The auth bundle will be interpolated into the %s
.
JSON object containing key/value pairs to be used with custom templates.
Optional client-generated user identifier to enable per-user rate limiting for SMS auth. We recommend using a hash of the client-side IP address.
Response
A successful response returns the following fields:
The activity object containing type, intent, and result
The intent of the activity
The initOtpAuthIntent object
Enum to specifiy whether to send OTP via SMS or email
Email or phone number to send the OTP code to
emailCustomization field
A URL pointing to a logo in PNG format. Note this logo will be resized to fit into 340px x 124px.
A template for the URL to be used in a magic link button, e.g. https://dapp.xyz/%s
. The auth bundle will be interpolated into the %s
.
JSON object containing key/value pairs to be used with custom templates.
Optional client-generated user identifier to enable per-user rate limiting for SMS auth. We recommend using a hash of the client-side IP address.
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/init_otp_auth \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <YOUR_API_KEY.YOUR_API_SECRET>" \
--data '{
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"timestampMs": "<string> (e.g., 1745474677471)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g., 1745474677471)",
"result": {
"activity": {
"type": "<string>",
"intent": {
"initOtpAuthIntent": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
},
"result": {
"initOtpAuthResult": {
"otpId": "<string>"
}
}
}
}
}
}
Was this page helpful?
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/init_otp_auth \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <YOUR_API_KEY.YOUR_API_SECRET>" \
--data '{
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"timestampMs": "<string> (e.g., 1745474677471)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
}'
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_INIT_OTP_AUTH",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g., 1745474677471)",
"result": {
"activity": {
"type": "<string>",
"intent": {
"initOtpAuthIntent": {
"otpType": "<string>",
"contact": "<string>",
"emailCustomization": {
"appName": "<string>",
"logoUrl": "<string>",
"magicLinkTemplate": "<string>",
"templateVariables": "<string>",
"templateId": "<string>"
},
"smsCustomization": {
"template": "<string>"
},
"userIdentifier": "<string>",
"sendFromEmailAddress": "<string>"
}
},
"result": {
"initOtpAuthResult": {
"otpId": "<string>"
}
}
}
}
}
}