Create a sandbox inbox
/api/v1/sandbox/inboxesReturns the inbox with its SMTP secret. Sandbox credentials stay viewable: read them again any time with GET /sandbox/inboxes/{id}/credentials. Your first inbox becomes the default, which is where test-mode API sends land. An organization may have 3 inboxes. Owners and admins only.
Request body
namestringrequired
Request
/api/v1/sandbox/inboxescurl -X POST 'https://app.mailyte.com/api/v1/sandbox/inboxes' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "<string>"
}'const response = await fetch('https://app.mailyte.com/api/v1/sandbox/inboxes', {
method: 'POST',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "<string>"
}),
});
const { data } = await response.json();import requests
response = requests.post(
"https://app.mailyte.com/api/v1/sandbox/inboxes",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
json={
"name": "<string>"
},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->post('https://app.mailyte.com/api/v1/sandbox/inboxes', [
'name' => '<string>',
]);
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/sandbox/inboxes")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
request["Content-Type"] = "application/json"
request.body = {
"name": "<string>"
}.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataobjectidstringULID, issued by the mail server (uppercase).
organization_idstringnamestringYour label, e.g. "Staging" or "CI".
usernamestringThe SMTP username for this inbox (`sbx_…`). Authenticate with it on `smtp_host`.
smtp_hoststringThe sandbox SMTP host, `sandbox.smtp.mailyte.com`.
smtp_portsarray<integer>2525 (STARTTLS) and 2465 (implicit TLS). The production ports 587/465 do not accept sandbox credentials.
max_messagesintegerHow many messages the inbox keeps. The oldest is deleted when a new one would exceed it.
retention_daysintegerMessages older than this are deleted.
inbound_addressstringAn address anyone can send to from anywhere (no SMTP login), which lands in this inbox: point a third-party service's notification address at it. Null when this deployment has no inbound sandbox domain.
is_defaultbooleanTest-mode API sends land in the default inbox. The first inbox you create is the default.
message_countintegerunread_countintegerlast_message_atstringWhen the newest message arrived. Null means the inbox has never received one.
created_atstringWhen the inbox was created.
secretstringThe SMTP password (`mlt_sbx_…`), on the call that creates the inbox only. Read it again any time with `GET /sandbox/inboxes/{id}/credentials`.
application/json{
"name": "Staging"
}Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.