API reference
Authentication
Create an account and open a session for the console. Routes in this group use the portal session, not an API key.
Create a developer account (and its first member, the owner)#
POST/auth/signup
- Authentication
- None (public)
Request body (JSON)
| Field | Type | Description | |
|---|---|---|---|
accountName | string | required | Name of your company or team: it identifies your account (2 to 120 characters). |
email | string | required | The member's email address. It is used as the sign-in identifier and must be unique. |
password | string | required | Password: at least 10 characters. |
Example
curl -X POST "$INBOX_API/auth/signup" \
-H "Content-Type: application/json" \
-d '{
"accountName": "Acme Software",
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide"
}'const res = await fetch(`${process.env.INBOX_API}/auth/signup`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"accountName": "Acme Software",
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide"
}),
});
const data = await res.json();import os
import requests
res = requests.post(
f"{os.environ['INBOX_API']}/auth/signup",
json={
"accountName": "Acme Software",
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/auth/signup');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'accountName' => 'Acme Software',
'email' => 'dev@acme.com',
'password' => 'un-mot-de-passe-solide',
]),
]);
$data = json_decode(curl_exec($ch), true);{
"accountId": "bbfa1ecb-9483-4158-8e9a-4437e512b14b",
"memberId": "e8878e87-7817-4773-8346-fc26a2433aa6",
"sessionToken": "ses_91bb0d22558b4575a110844d944cca5d8b05e72328b",
"expiresAt": "2026-12-12T08:33:45.098Z"
}Open a session#
POST/auth/login
- Authentication
- None (public)
Request body (JSON)
| Field | Type | Description | |
|---|---|---|---|
email | string | required | The member's email address. It is used as the sign-in identifier and must be unique. |
password | string | required | Password: at least 10 characters. |
Example
curl -X POST "$INBOX_API/auth/login" \
-H "Content-Type: application/json" \
-d '{
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide"
}'const res = await fetch(`${process.env.INBOX_API}/auth/login`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide"
}),
});
const data = await res.json();import os
import requests
res = requests.post(
f"{os.environ['INBOX_API']}/auth/login",
json={
"email": "dev@acme.com",
"password": "un-mot-de-passe-solide",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/auth/login');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'dev@acme.com',
'password' => 'un-mot-de-passe-solide',
]),
]);
$data = json_decode(curl_exec($ch), true);{
"accountId": "bbfa1ecb-9483-4158-8e9a-4437e512b14b",
"memberId": "e8878e87-7817-4773-8346-fc26a2433aa6",
"sessionToken": "ses_9be05ed6c0764f063b187d57f0499b2eb42e7f0e4f7",
"expiresAt": "2026-12-12T08:33:45.271Z"
}Signed-in member#
GET/auth/me
- Authentication
- Portal session (Bearer ses_…)
Example
curl "$INBOX_API/auth/me" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/auth/me`, {
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = await res.json();import os
import requests
res = requests.get(
f"{os.environ['INBOX_API']}/auth/me",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/auth/me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"accountId": "bbfa1ecb-9483-4158-8e9a-4437e512b14b",
"memberId": "e8878e87-7817-4773-8346-fc26a2433aa6",
"role": "owner",
"email": "dev@acme.com"
}Close the session#
POST/auth/logout
- Authentication
- Portal session (Bearer ses_…)
Example
curl -X POST "$INBOX_API/auth/logout" \
-H "Authorization: Bearer $INBOX_SESSION"const res = await fetch(`${process.env.INBOX_API}/auth/logout`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INBOX_SESSION}`,
},
});
const data = await res.json();import os
import requests
res = requests.post(
f"{os.environ['INBOX_API']}/auth/logout",
headers={
"Authorization": f"Bearer {os.environ['INBOX_SESSION']}",
},
)
print(res.json())<?php
$ch = curl_init(getenv('INBOX_API') . '/auth/logout');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('INBOX_SESSION'),
],
]);
$data = json_decode(curl_exec($ch), true);(no content)