curl --request POST \
--url https://api.mountthor.com/v1/admin/registrations \
--header 'Content-Type: application/json' \
--data '
{
"code": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"contact": {
"email": "alex@example.com",
"name": "Alex Customer"
}
}
'import requests
url = "https://api.mountthor.com/v1/admin/registrations"
payload = {
"code": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"contact": {
"email": "alex@example.com",
"name": "Alex Customer"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
contact: {email: 'alex@example.com', name: 'Alex Customer'}
})
};
fetch('https://api.mountthor.com/v1/admin/registrations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mountthor.com/v1/admin/registrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
'contact' => [
'email' => 'alex@example.com',
'name' => 'Alex Customer'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mountthor.com/v1/admin/registrations"
payload := strings.NewReader("{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mountthor.com/v1/admin/registrations")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountthor.com/v1/admin/registrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}"
response = http.request(request)
puts response.read_body{
"account": {
"display_name": "Acme Robotics"
},
"api_key": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"plaintext_display": "one-time",
"scopes": [
"account:read",
"keys:write",
"sessions:write"
],
"secret": "mthr_live_01JZ8M7EXAMPLE",
"expires_at": "2027-01-01T00:00:00Z"
},
"links": {
"account": "<string>",
"compute": "<string>",
"keys": "<string>",
"sessions": "<string>"
},
"next_steps": [
{
"action": "<string>",
"kind": "save-api-key",
"status": "required"
}
],
"status": "registered",
"tenant": {
"namespace_name": "tenant-acme-prod"
},
"account_setup_url": "https://example.authkit.app/sign-up?invite=01HF...",
"identity_setup": {
"expires_at": "2026-05-25T18:30:00Z",
"provider": "workos",
"url": "<string>"
}
}"<string>"Activate Account
Redeems a one-time registration code, activates the account, and returns the initial API key exactly once. The route accepts JSON and the hosted HTML registration form.
curl --request POST \
--url https://api.mountthor.com/v1/admin/registrations \
--header 'Content-Type: application/json' \
--data '
{
"code": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"contact": {
"email": "alex@example.com",
"name": "Alex Customer"
}
}
'import requests
url = "https://api.mountthor.com/v1/admin/registrations"
payload = {
"code": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"contact": {
"email": "alex@example.com",
"name": "Alex Customer"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
code: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
contact: {email: 'alex@example.com', name: 'Alex Customer'}
})
};
fetch('https://api.mountthor.com/v1/admin/registrations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mountthor.com/v1/admin/registrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'code' => '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
'contact' => [
'email' => 'alex@example.com',
'name' => 'Alex Customer'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mountthor.com/v1/admin/registrations"
payload := strings.NewReader("{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mountthor.com/v1/admin/registrations")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountthor.com/v1/admin/registrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\",\n \"contact\": {\n \"email\": \"alex@example.com\",\n \"name\": \"Alex Customer\"\n }\n}"
response = http.request(request)
puts response.read_body{
"account": {
"display_name": "Acme Robotics"
},
"api_key": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"plaintext_display": "one-time",
"scopes": [
"account:read",
"keys:write",
"sessions:write"
],
"secret": "mthr_live_01JZ8M7EXAMPLE",
"expires_at": "2027-01-01T00:00:00Z"
},
"links": {
"account": "<string>",
"compute": "<string>",
"keys": "<string>",
"sessions": "<string>"
},
"next_steps": [
{
"action": "<string>",
"kind": "save-api-key",
"status": "required"
}
],
"status": "registered",
"tenant": {
"namespace_name": "tenant-acme-prod"
},
"account_setup_url": "https://example.authkit.app/sign-up?invite=01HF...",
"identity_setup": {
"expires_at": "2026-05-25T18:30:00Z",
"provider": "workos",
"url": "<string>"
}
}"<string>"Body
Response
Account registered
Response body for POST /v1/admin/registrations.
Activated account metadata.
Show child attributes
Show child attributes
Initial API key. The secret value is returned exactly once.
Show child attributes
Show child attributes
API endpoints relevant after activation.
Show child attributes
Show child attributes
Customer actions required after activation.
Show child attributes
Show child attributes
Registration result. Always registered after successful activation.
"registered"
Default compute namespace metadata.
Show child attributes
Show child attributes
"https://example.authkit.app/sign-up?invite=01HF..."
Optional identity setup link when SSO setup is available.
Show child attributes
Show child attributes