Claim a sandbox with the emailed code
curl --request POST \
--url https://api.gigstack.io/v2/auth/sandbox/claim \
--header 'Content-Type: application/json' \
--data '
{
"team_id": "team_a1b2c3d4e5f6",
"code": "123456"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({team_id: 'team_a1b2c3d4e5f6', code: '123456'})
};
fetch('https://api.gigstack.io/v2/auth/sandbox/claim', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/auth/sandbox/claim"
payload = {
"team_id": "team_a1b2c3d4e5f6",
"code": "123456"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"data": {
"claimed": true,
"team_id": "team_a1b2c3d4e5f6",
"password_email": "sent",
"next": "Check your email to set your password, then go live from the app"
},
"message": "Sandbox claimed",
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "invalid_or_expired_code",
"message": "The code is not valid for this sandbox or has expired"
},
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "not_found",
"message": "Not found"
},
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Too many claim attempts. Retry in 900 seconds."
},
"timestamp": 1767225600000
}Auth
Claim a sandbox with the emailed code
The person proves they read the inbox the sandbox was created for. On success the sandbox is
theirs: their email is marked verified, the test key is no longer limited to test data, and
they receive a link to set a password and sign in to app.gigstack.pro, where they can go live.
The code works once and locks after 5 wrong attempts; a sandbox locks for good after 15 wrong
attempts across re-sent codes. Every mismatch, expired or spent code answers the same
400 invalid_or_expired_code.
Off by default (404 not_found), like POST /auth/sandbox.
POST
/
auth
/
sandbox
/
claim
Claim a sandbox with the emailed code
curl --request POST \
--url https://api.gigstack.io/v2/auth/sandbox/claim \
--header 'Content-Type: application/json' \
--data '
{
"team_id": "team_a1b2c3d4e5f6",
"code": "123456"
}
'const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({team_id: 'team_a1b2c3d4e5f6', code: '123456'})
};
fetch('https://api.gigstack.io/v2/auth/sandbox/claim', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/auth/sandbox/claim"
payload = {
"team_id": "team_a1b2c3d4e5f6",
"code": "123456"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"data": {
"claimed": true,
"team_id": "team_a1b2c3d4e5f6",
"password_email": "sent",
"next": "Check your email to set your password, then go live from the app"
},
"message": "Sandbox claimed",
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "invalid_or_expired_code",
"message": "The code is not valid for this sandbox or has expired"
},
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "not_found",
"message": "Not found"
},
"timestamp": 1767225600000
}{
"success": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Too many claim attempts. Retry in 900 seconds."
},
"timestamp": 1767225600000
}Body
application/json