curl --request GET \
--url https://zerodrop.dev/api/inbox/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://zerodrop.dev/api/inbox/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://zerodrop.dev/api/inbox/{name}', 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://zerodrop.dev/api/inbox/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://zerodrop.dev/api/inbox/{name}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://zerodrop.dev/api/inbox/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://zerodrop.dev/api/inbox/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"emails": [
{
"id": "<CALMkwzNSLxzko58@mail.gmail.com>",
"from": "noreply@yourapp.com",
"to": "swift-x7k2m@zerodrop-sandbox.online",
"subject": "Verify your email",
"raw": "...",
"receivedAt": "2026-06-17T10:23:30.356Z",
"otp": null,
"magicLink": "https://yourapp.com/verify?token=abc123"
}
],
"count": 1
}{
"error": "Inboxes named k7x2-… belong to a ZeroDrop account and can be read only with its API key (Authorization: Bearer zd_k7x2_…). Without that key, use a name that doesn't start with k7x2-."
}{
"error": "Too many requests. Slow down."
}Fetch emails for an inbox
Returns all emails currently stored for the given inbox name. An inbox expires 30 minutes after its latest email. Returns an empty array if the inbox has no emails or has expired. Without an API key, an item can be a notice that ZeroDrop held an email (held: true) instead of an email.
curl --request GET \
--url https://zerodrop.dev/api/inbox/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://zerodrop.dev/api/inbox/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://zerodrop.dev/api/inbox/{name}', 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://zerodrop.dev/api/inbox/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://zerodrop.dev/api/inbox/{name}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://zerodrop.dev/api/inbox/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://zerodrop.dev/api/inbox/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"emails": [
{
"id": "<CALMkwzNSLxzko58@mail.gmail.com>",
"from": "noreply@yourapp.com",
"to": "swift-x7k2m@zerodrop-sandbox.online",
"subject": "Verify your email",
"raw": "...",
"receivedAt": "2026-06-17T10:23:30.356Z",
"otp": null,
"magicLink": "https://yourapp.com/verify?token=abc123"
}
],
"count": 1
}{
"error": "Inboxes named k7x2-… belong to a ZeroDrop account and can be read only with its API key (Authorization: Bearer zd_k7x2_…). Without that key, use a name that doesn't start with k7x2-."
}{
"error": "Too many requests. Slow down."
}Authorizations
Free API key from https://zerodrop.dev/keys, in the form zd_<prefix>_<32 letters and digits>. Needed only to read inboxes whose name starts with the key's prefix (k7x2-…); other inboxes need no authentication.
Path Parameters
The inbox name (without the domain). Example: swift-x7k2m for swift-x7k2m@zerodrop-sandbox.online. Names that start with a registered key prefix (k7x2-…) can be read only with that key.
"swift-x7k2m"
Query Parameters
Identifies the client making the request. Use sdk for programmatic access.
browser, sdk