anonym.es

API voor links en tijdelijke mail

De API maakt anonieme korte links, geeft hun klikstatistieken terug, wijzigt hun instellingen en verwijdert ze. Verzoeken en antwoorden gebruiken JSON. CORS is ingeschakeld, dus aanroepen werken ook vanuit browsercode. Vanaf Pro beheert hij ook tijdelijke mailboxen: een adres maken, het op mail afvragen en binnengekomen berichten beantwoorden.

LinksTijdelijke e-mailFouten

Basisadres:

https://anonym.es/api/v1

Snel beginnen

Stuur het bestemmingsadres om een korte link te maken:

curl -X POST https://anonym.es/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article"}'

Voor deze aanroep is geen token vereist. Zonder token wordt de link als gastlink gemaakt binnen de Free-quota van je IP-adres.

Met een accounttoken zet dezelfde aanroep de link in je dashboard en telt hij mee voor je abonnement:

curl -X POST https://anonym.es/api/v1/links \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article"}'

Het antwoord bevat het korte adres, de id van de link en het token dat deze link beheert. Bewaar het token: het is nodig om de link later te lezen of te verwijderen.

{
  "ok": true,
  "link": {
    "id": 4821,
    "short": "https://anonym.es/k7m2q",
    "url": "https://example.com/article",
    "status": "active",
    "password": false,
    "created_at": "2026-09-05T14:02:11Z",
    "expires_at": null,
    "max_hits": null,
    "self_destruct": false,
    "delay": null,
    "no_countdown": false,
    "adult": false,
    "note": null,
    "tags": [],
    "clicks": 0,
    "uniques": 0
  },
  "token": "3f9c1b7e2d4a4c0e9b8f7a6d5c4b3a21",
  "left": 4
}

Velden van het linkobject

Alle endpoints die een link teruggeven gebruiken deze structuur. Tijdstempels zijn ISO 8601 in UTC. De tellers clicks en uniques beslaan de volledige levensduur van de link.

VeldTypeWat het doet
idintegerNumerieke id van de link, gebruikt door de andere aanroepen.
shortstringHet korte adres om te delen.
urlstring | nullDe bestemming, null bij een link met alleen een notitie.
statusstringactive | expired | exhausted (bezoeklimiet bereikt) | flagged (bestemming op een veiligheidslijst) | banned.
passwordbooleanBezoekers moeten een wachtwoord invoeren.
created_atstringISO 8601, UTC.
expires_atstring | nullWanneer de link vervalt, null = geen vervaldatum.
max_hitsinteger | nullBezoeklimiet, null = geen limiet.
self_destructbooleanDe link verwijdert zichzelf definitief als de limiet of de levensduur is bereikt.
delayinteger | nullSeconden op de doorstuurpagina, null = standaard van het plan, 0 = direct.
no_countdownbooleanDe doorstuurpagina toont geen aftelling en wacht op een klik op het adres.
adultbooleanBezoekers bevestigen vóór de doorstuurpagina dat ze 18 jaar of ouder zijn.
notestring | nullDe notitie op de doorstuurpagina.
tagsstring[]Tags, in kleine letters.
clicksintegerBezoeken over de hele levensduur van de link.
uniquesintegerUnieke bezoekers (één per adres per dag) over de hele levensduur van de link.

Autorisatie

Geautoriseerde verzoeken dragen het token in de Authorization-header. Als alternatief wordt de header X-API-Key geaccepteerd. Tokens worden nooit in de query string doorgegeven.

Authorization: Bearer YOUR_TOKEN
TokenWaar te krijgenWaarvoor
AccounttokenIn het dashboardAlle links van het account, met de rechten van het plan
LinktokenWordt teruggegeven bij het maken van een linkEén specifieke link, met de rechten van het Free-plan

Een accounttoken begint met anon_. Een linktoken bestaat uit 32 tekens. Het aanmaken van een nieuw accounttoken maakt het vorige ongeldig.

Voorbeeld:

curl https://anonym.es/api/v1/me \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"

Een accounttoken aanmaken in het dashboard

Endpoints

De body van een verzoek kan als application/json of als application/x-www-form-urlencoded worden verzonden. Parameternamen en foutcodes zijn voor alle endpoints gelijk.

MethodePadTokenKostenWat het doet
GET/api/v1optioneel1Over deze API: versie, adressen van de documentatie en het schema.
POST/api/v1/linksoptioneel5 + 1/urlEen link maken, of tot 50 tegelijk. Zonder token: als gast, op de Free-quota. Geeft de link met zijn token terug.
GET/api/v1/names/checkoptioneel2Is deze eigen naam beschikbaar? Suggesties als hij bezet is.
GET/api/v1/linksaccount2De links van het account, nieuwste eerst.
GET/api/v1/links/lookuplink of account1Een van je links vinden via het korte adres.
GET/api/v1/links/{id}link of account1Eén link: instellingen, status, klikken en unieke bezoekers over de hele levensduur. Accounttokens kunnen een statistiekrapport toevoegen.
PATCH/api/v1/links/{id}link of account3Instellingen wijzigen. Alleen verzonden velden veranderen. Betaalde plannen (een linktoken heeft Free-rechten en kan niet bewerken).
DELETE/api/v1/links/{id}link of account2De link verwijderen. De naam komt weer vrij.
GET/api/v1/links/{id}/qrlink of account3De QR-code van het korte adres als afbeelding (PNG of SVG). Vereist een token en past dus bij servercode.
GET/api/v1/qroptioneel3De QR-code van een kort adres als afbeelding zonder token: het adres zelf is de sleutel. Gemaakt voor <img>-tags.
GET/api/v1/meaccount1Het account: plan, limieten, resterende quota, extra domeinen, wat het plan toestaat.
GET/api/v1/openapi.jsonoptioneel1Deze API als OpenAPI 3.1-document.

Tijdelijke e-mail

MethodePadTokenKostenWat het doet
GET/api/v1/mail/domainsaccount1Tijdelijke e-mail: de domeinen waarop het abonnement adressen mag maken, en welke daarvan een vastgezet adres toelaten (pinnable).
GET/api/v1/mail/limitsaccount1Tijdelijke e-mail: hoeveel adressen het abonnement tegelijk en per uur toestaat en wat er over is.
GET/api/v1/mail/addressesaccount2Tijdelijke e-mail: de actieve adressen van het account met hun resterende tijd.
POST/api/v1/mail/addressesaccount5Tijdelijke e-mail: een wegwerpadres aanmaken op een van de domeinen van het abonnement. Het antwoord bevat één keer key, de geheime sleutel van het adres. De post wordt versleuteld opgeslagen en alleen deze sleutel opent die. Stuur hem mee als X-Mail-Key.
GET/api/v1/mail/addresses/{id}account1Tijdelijke e-mail: één adres met resterende tijd, verlengingen en het verzendquotum van vandaag.
POST/api/v1/mail/addresses/{id}/keyaccount3Tijdelijke e-mail: een nieuwe sleutel uitgeven voor een via de API aangemaakt adres als de sleutel kwijt is. Post onder de oude sleutel blijft gesloten en blijft terugkomen met encrypted = true.
POST/api/v1/mail/addresses/{id}/pinaccount3Tijdelijke e-mail: het adres vastzetten. Een vastgezet adres heeft geen klok, het leeft zolang het abonnement actief is of zolang het domein beschikbaar is.
POST/api/v1/mail/addresses/{id}/unpinaccount3Tijdelijke e-mail: een vastgezet of gereserveerd adres tijdelijk maken. De klok van het abonnement begint meteen.
POST/api/v1/mail/addresses/{id}/extendaccount3Tijdelijke e-mail: de klok van het adres terugzetten op de volle levensduur van het abonnement (telt als verlenging).
DELETE/api/v1/mail/addresses/{id}account2Tijdelijke e-mail: het adres met alle inhoud verwijderen.
GET/api/v1/mail/addresses/{id}/messagesaccount2Tijdelijke e-mail: de berichten van een adres, nieuwste eerst, met leesstatus en het oordeel over de afzender. Vereist X-Mail-Key. Zonder komen de rijen terug met encrypted = true en zonder inhoud.
GET/api/v1/mail/addresses/{id}/messages/{mid}account1Tijdelijke e-mail: één bericht volledig, met tekst, HTML, bijlagen en verificatieresultaten. Markeert het als gelezen. Vereist X-Mail-Key.
PATCH/api/v1/mail/addresses/{id}/messages/{mid}account3Tijdelijke e-mail: een bericht als gelezen of ongelezen markeren.
DELETE/api/v1/mail/addresses/{id}/messages/{mid}account2Tijdelijke e-mail: een bericht verwijderen.
GET/api/v1/mail/addresses/{id}/messages/{mid}/attachments/{n}account1Tijdelijke e-mail: één bijlage als bestandsdownload. Vereist X-Mail-Key.
POST/api/v1/mail/addresses/{id}/messages/{mid}/replyaccount5Tijdelijke e-mail: een bericht beantwoorden. Alleen toegestaan als de afzender de verificatie heeft doorstaan, en alleen aan die afzender. Vereist X-Mail-Key.
POST/api/v1/mail/addresses/{id}/sendaccount5Tijdelijke e-mail: een bericht naar elk adres sturen (vrije verzendingen van het abonnement).
GET/api/v1/mail/addresses/{id}/sentaccount2Tijdelijke e-mail: berichten die vanaf dit adres zijn verzonden. Voor ontvanger, onderwerp en tekst is X-Mail-Key nodig.

De kosten zijn in eenheden van de snelheidslimiet, zie Snelheidslimieten.

Een link maken

POST /api/v1/links

Het minimale verzoek bevat alleen het veld url:

curl -X POST https://anonym.es/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article"}'

Met een accounttoken hoort de link bij het account en telt hij mee voor het abonnement. Zonder token is het een gastlink op de IP-quota:

curl -X POST https://anonym.es/api/v1/links \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article"}'

Een geslaagd verzoek geeft status 201 terug met de link, het token en het aantal links dat in de huidige quotaperiode overblijft.

Velden van het antwoord:

VeldTypeWat het doet
linkobjectDe gemaakte link.
tokenstringHet linktoken (32 tekens), beheert deze link.
leftinteger | nullLinks die in de huidige quotaperiode overblijven, null bij een plan zonder limiet.
qrobjectDe QR-code, aanwezig wanneer qr=true is verzonden.
batchbooleantrue wanneer meerdere adressen zijn verzonden.
resultsarrayEén item per adres, in de verzonden volgorde: {ok: true, link, token, qr} of {ok: false, url, error, message, field}.

Link met een eigen naam

Het korte adres krijgt de naam my-article als die vrij is en aan de regels hieronder voldoet.

curl -X POST https://anonym.es/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article","name":"my-article"}'

Naamregels:

Een naam kan worden gecontroleerd voordat de link wordt gemaakt:

curl "https://anonym.es/api/v1/names/check?name=my-article"

Velden van het controleantwoord:

VeldTypeWat het doet
availablebooleantrue wanneer de naam gebruikt kan worden.
namestringDe gecontroleerde naam.
errorstringWaarom de naam niet beschikbaar is: taken, reserved, too_short en de andere naamfouten.
messagestringDe reden in woorden.
fieldstringAltijd name.
suggestarrayVrije alternatieven als de naam bezet is.

Meerdere links tegelijk

Het veld urls accepteert tot 50 adressen, als JSON-array of als tekst met één adres per regel. Elk adres wordt een eigen link met een eigen token, en de overige velden gelden voor alle links. Een eigen naam is in een batch niet beschikbaar.

curl -X POST https://anonym.es/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{"urls":["https://example.com/a","https://example.com/b","https://example.com/c"]}'

Het antwoord bevat batch: true en een array results met één item per adres, in de verzonden volgorde. Een fout adres levert een item met ok: false en de foutcode op zonder de rest te stoppen.

Extra instellingen

curl -X POST https://anonym.es/api/v1/links \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/article",
    "name": "my-article",
    "expires_days": 30,
    "max_hits": 1000,
    "self_destruct": true,
    "password": "secret",
    "note": "Available until the end of the month",
    "delay": 5,
    "tags": "blog,promo",
    "qr": true,
    "qr_size": 300,
    "qr_format": "png"
  }'

Opties die als betaald zijn gemarkeerd worden voor gasten en in het Free-plan genegeerd. Het antwoord geeft de instellingen weer die de link daadwerkelijk heeft gekregen.

VeldTypeWat het doet
urlstring, verplichtDe bestemming. Of urls: meerdere adressen, één per regel of als JSON-array (tot 50), elk krijgt een eigen link.
namestringEigen naam voor één link (gecontroleerd op de regels en het naamfilter).
domainstringOne of the alias domains, random, or random-alias (random among the alias domains only). Paid plans; default is random: links never sit on the main domain. Free and guests: anonymes.click.
subbooleanVorm name.alias in plaats van alias/name. Plan Max, alleen op de extra domeinen.
expires_daysintegerLevensduur in dagen. Betaalde plannen.
max_hitsintegerBezoeklimiet. Betaalde plannen.
self_destructbooleanDe link definitief verwijderen als de bezoeklimiet of de levensduur is bereikt (vereist max_hits of expires_days).
passwordstringWachtwoord dat bezoekers moeten invoeren. Betaalde plannen.
notestringTekst op de doorstuurpagina. Betaalde plannen, lengte per plan.
note_onlybooleanDe link opent de notitie zelf, geen bestemming. Pro+ en hoger.
delayintegerSeconden op de doorstuurpagina, 0 = direct. Betaalde plannen.
no_countdownbooleanGeen aftellen op de doorstuurpagina: geen timer, geen automatisch doorsturen, de bezoeker klikt op het adres. Betaalde plannen.
adultbooleanInhoud voor volwassenen (18+): bezoekers bevestigen hun leeftijd op een aparte pagina voordat er iets anders wordt getoond. In elk abonnement.
tagsstringTags gescheiden door komma's (tot 5, elk 24 tekens). Accounttokens op betaalde plannen.
qrbooleanDe QR-code van het korte adres (base64) in het antwoord opnemen.
qr_sizeintegerZijde van de QR-afbeelding in pixels, 100–1000 (standaard 300, PNG rondt af naar hele modules).
qr_formatstringpng (standaard) of svg.
qr_logobooleanfalse = code zonder logo. Alleen betaalde plannen, anders genegeerd.

Links weergeven

GET /api/v1/links

Vereist een accounttoken.

Vereist een accounttoken. Links worden van nieuw naar oud teruggegeven.

curl "https://anonym.es/api/v1/links?page=1&per=50" \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
VeldTypeWat het doet
pageintegerPaginanummer (standaard 1).
perintegerLinks per pagina, 1–100 (standaard 50).
qstringZoeken in de korte naam, het domein en de bestemming (één platte lijst, tot 50).
tagstringAlleen links met deze tag.

Zoeken en het tagfilter kunnen worden gecombineerd:

curl "https://anonym.es/api/v1/links?q=example&tag=promo" \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"

Velden van het antwoord:

VeldTypeWat het doet
pageintegerHuidige pagina.
perintegerLinks per pagina.
totalintegerAantal gevonden links.
pagesintegerAantal pagina's.
linksarrayLinkobjecten, nieuwste eerst.

Een link vinden via het korte adres

Een link wordt aangesproken met zijn numerieke id (het veld id, bijvoorbeeld 4821), niet met de naam in het korte adres. Als alleen het korte adres bekend is, kan de id worden opgezocht met elk token dat die link beheert:

curl --get https://anonym.es/api/v1/links/lookup \
  -H "Authorization: Bearer YOUR_TOKEN" \
  --data-urlencode "short=https://anonym.es/k7m2q"

Linkgegevens en statistiek

GET /api/v1/links/{id}

Geeft de instellingen van de link, de status, het aantal bezoeken en het aantal unieke bezoekers over de hele levensduur terug:

curl https://anonym.es/api/v1/links/4821 \
  -H "Authorization: Bearer YOUR_TOKEN"

Met een accounttoken voegt de parameter stats een bezoekrapport toe:

curl "https://anonym.es/api/v1/links/4821?stats=day" \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
WaardeRapportperiode
dayLaatste 30 dagen, per dag
weekLaatste 26 weken, per ISO-week
monthLaatste 24 maanden, per maand

Velden van het antwoord: stats

VeldTypeWat het doet
modestringday, week of month.
fromstringEerste dag van het rapport, JJJJ-MM-DD.
tostringLaatste dag van het rapport.
seriesarrayEén item per periode, oudste eerst: [from, to, visits, uniques].
summaryobjectcur (de huidige periode), prev (de vorige), avg (het gemiddelde van de periodes vóór de huidige), elk met hits en uniq.
dimsobjectUitsplitsing voor het bereik: ref, country, device, os, browser, hour, elk een lijst van [waarde, bezoeken].

Een link bewerken

PATCH /api/v1/links/{id}

Alleen de verzonden velden veranderen:

curl -X PATCH https://anonym.es/api/v1/links/4821 \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"max_hits": 2000, "delay": 3, "tags": "blog,updated"}'

Bewerken vereist een betaald plan. Een linktoken heeft de rechten van het Free-plan en kan geen instellingen wijzigen.

VeldTypeWat het doet
urlstringNieuwe bestemming. Pro+ en hoger.
namestringNieuwe naam (dezelfde regels als een eigen naam).
expires_daysintegerNieuwe levensduur in dagen, leeg = geen vervaldatum.
max_hitsintegerNieuwe bezoeklimiet, leeg = geen limiet.
self_destructbooleanDefinitief verwijderen als de limiet of de levensduur is bereikt, false zet het uit.
passwordstringNieuw wachtwoord, een lege string verwijdert het wachtwoord.
notestringNieuwe notitie, leeg verwijdert haar (een link met alleen een notitie blijft er een nodig hebben).
delayintegerSeconden op de doorstuurpagina, leeg = standaard van het plan.
no_countdownbooleantrue = geen aftellen op de doorstuurpagina, false zet het aftellen weer aan.
adultbooleantrue = leeftijdsbevestiging (18+) vóór de doorstuurpagina, false haalt die weg.
tagsstringNieuwe taglijst gescheiden door komma's, leeg verwijdert alle tags.

Een waarde wissen

curl -X PATCH https://anonym.es/api/v1/links/4821 \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"password": "", "note": "", "expires_days": null, "max_hits": null, "delay": 0}'

Een link verwijderen

DELETE /api/v1/links/{id}
curl -X DELETE https://anonym.es/api/v1/links/4821 \
  -H "Authorization: Bearer YOUR_TOKEN"

Na het verwijderen is de eigen naam weer vrij. De statistiek wordt samen met de link verwijderd.

Velden van het antwoord:

VeldTypeWat het doet
deletedintegerDe id van de verwijderde link.

QR-code

Vraag voor een HTML-img-tag de code op via het korte adres. Dit endpoint heeft geen token nodig: het korte adres zelf is de sleutel, en iedereen die het heeft kan dezelfde code maken.

<img
  src="https://anonym.es/api/v1/qr?short=https%3A%2F%2Fanonym.es%2Fk7m2q&qr_size=400"
  alt="QR code"
>

Servercode kan de afbeelding ook per id met een token opvragen, of base64-gecodeerd in JSON ontvangen door qr=true aan de aanroep voor maken of details toe te voegen:

curl "https://anonym.es/api/v1/links/4821/qr?qr_size=400&qr_format=svg" \
  -H "Authorization: Bearer YOUR_TOKEN" -o qr.svg

Parameters van beide afbeeldingsendpoints:

VeldTypeWat het doet
shortstring, verplichtHet korte adres, bijvoorbeeld https://anonym.es/abc12.
qr_sizeintegerZijde van de QR-afbeelding in pixels, 100–1000 (standaard 300, PNG rondt af naar hele modules).
qr_formatstringpng (standaard) of svg.
qr_logobooleanfalse = code zonder logo. Alleen betaalde plannen, anders genegeerd.

Het veld qr in JSON-antwoorden:

VeldTypeWat het doet
formatstringpng of svg.
mimestringimage/png of image/svg+xml.
sizeintegerGevraagde zijde in pixels.
logobooleanOf het logo in het midden is getekend.
base64stringDe afbeelding, base64-gecodeerd.

Accountgegevens

GET /api/v1/me

Vereist een accounttoken. Geeft het plan, de limieten en de resterende quota terug:

curl https://anonym.es/api/v1/me \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
VeldTypeWat het doet
loginstringDe login van het account.
planstringPlansleutel: free, pro, pro_plus, max of enterprise.
plan_labelstringDe plannaam zoals op de site getoond.
untilstring | nullWanneer het betaalde plan eindigt, ISO 8601. null bij Free of zonder einddatum.
limitsobjectlinks (per periode), per (day of month), ai_hourly (eigen namen per uur), name_min (kortste eigen naam), note_max (notitielengte), api_units (API-budget per minuut).
leftinteger | nullLinks die in de huidige quotaperiode overblijven, null zonder limiet.
aliasesarrayDe extra domeinen die het plan mag gebruiken.
canobjectEén booleaanse waarde per optie: password, ttl, edit, edit_url, tags, note, note_only, alias, sub, instant, qr_no_logo.

API voor tijdelijke e-mail

Maak een adres op een van de domeinen van het abonnement, vraag het op nieuwe mail af, lees berichten met hun verificatieresultaat, beantwoord binnengekomen berichten en verwijder het adres als je klaar bent. Je hebt een accounttoken nodig vanaf Pro. De limieten van het abonnement gelden.

Een adres leeft zolang het abonnement toestaat. De cijfers staan in de tabel hieronder. De aanroep extend zet de klok terug. Antwoorden en vrije verzendingen worden per adres per UTC-dag geteld.

De post van een adres wordt versleuteld opgeslagen. De sleutel komt één keer, in het veld key van het antwoord dat het adres aanmaakt. De server bewaart hem niet, dus sla hem zelf op. Stuur hem mee in de header X-Mail-Key wanneer je de lijst opvraagt, een bericht leest, een bijlage ophaalt, verzonden items opvraagt of antwoordt. De server opent de post alleen in het geheugen en alleen voor dat ene antwoord. Zonder de header komen de rijen terug met encrypted = true en zonder inhoud.

Een adres maken

curl -X POST https://anonym.es/api/v1/mail/addresses \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"quiet-heron-41","domain":"anon.skin"}'
VeldTypeWat het doet
namestringLokaal deel, 3-30 letters, cijfers, punten of koppeltekens. Leeg = een willekeurige naam.
domainstringEen van de domeinen van het abonnement (zie /mail/domains). Standaard het eerste.

Velden van het antwoord: address

VeldTypeWat het doet
idintegerNumeriek id van het adres, gebruikt door de andere aanroepen.
addressstringHet volledige adres.
domainstringHet domein.
created_atstringISO 8601, UTC.
expires_atstring | nullWanneer het adres verdwijnt, null bij een vastgezet adres.
seconds_leftinteger | nullSeconden tot het verdwijnt, null = nooit.
extendsintegerGebruikte verlengingen.
extends_leftinteger | nullResterende verlengingen, null = onbeperkt.
pinnedbooleantrue als het adres is vastgezet: geen klok, het leeft zolang het abonnement actief is.
reservedbooleantrue als het abonnement dit vastgezette adres niet meer dekt. Het houdt zijn naam en neemt mail aan, elke aanroep die leest of verstuurt antwoordt address_reserved.
reserved_leftinteger | nullSeconden tot een gereserveerd adres met de mail wordt verwijderd, null als het niet in reserve staat.
mailsintegerMessages in the inbox of the address. Only in the list of GET /mail/addresses.
unreadintegerUnread messages among them. Only in the list of GET /mail/addresses.
quotaobjectVerzendquotum van vandaag: replies, replies_left, sends, sends_left (UTC-dag).
encryptedbooleantrue als de post van het adres versleuteld wordt opgeslagen.
keystringDe geheime sleutel van het adres, base64. Hij komt alleen in het antwoord op POST /mail/addresses en POST /mail/addresses/{id}/key. Hij wordt één keer getoond en niet op de server bewaard. Stuur hem mee als header X-Mail-Key om post, bijlagen en verzonden items te lezen en om te antwoorden. Geplakt in het sleutelveld van het adres op de site opent hij de post ook daar. Een verloren sleutel is niet terug te halen.

De domeinen waarop je abonnement adressen kan aanmaken:

curl https://anonym.es/api/v1/mail/domains \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"

Hoeveel adressen het abonnement tegelijk en per uur toestaat en wat er nog over is:

curl https://anonym.es/api/v1/mail/limits \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"

Velden van het antwoord: limits

VeldTypeWat het doet
addresses.limitinteger | nullAdressen die het abonnement tegelijk toestaat, null = onbeperkt.
addresses.usedintegerActieve adressen van het account.
new_per_hour.limitinteger | nullNieuwe adressen die het abonnement per uur toestaat, null = onbeperkt.
new_per_hour.leftinteger | nullNieuwe adressen die dit uur nog over zijn, null = onbeperkt.
new_per_hour.wait_minintegerMinuten tot een nieuw adres kan, 0 = meteen.
pinned.limitinteger | nullHoeveel adressen het abonnement laat vastzetten, null = onbeperkt, 0 = geen.
pinned.usedintegerVastgezette adressen van het account, ook de gereserveerde.
pinned.reservedintegerHoeveel daarvan in reserve wachten.

Sleutel kwijt? De aanroep hieronder geeft een nieuwe uit. Post onder de oude sleutel blijft gesloten.

curl -X POST https://anonym.es/api/v1/mail/addresses/17/key \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"

De inbox afvragen

curl https://anonym.es/api/v1/mail/addresses/17/messages \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "X-Mail-Key: ADDRESS_KEY"

Velden van het antwoord: messages[]

VeldTypeWat het doet
idintegerNumeriek id van het bericht.
fromstringAdres van de afzender.
from_namestringWeergavenaam van de afzender.
subjectstringOnderwerp.
previewstringDe eerste 140 tekens van de tekst.
received_atstringISO 8601, UTC.
readbooleantrue zodra het bericht is geopend (of als gelezen gemarkeerd).
verifiedbooleantrue als het domein van de afzender de verificatie doorstond (DMARC pass, of DKIM/SPF pass uitgelijnd met het From-domein); alleen dan mag je antwoorden.
verified_domainstring | nullHet geverifieerde domein, of null.
attachmentsintegerAantal bijlagen.
encryptedbooleanAanwezig en true als de aanvraag geen X-Mail-Key bevatte. De rij komt dan zonder inhoud. Met de sleutel van het adres opent de server het bericht in het geheugen voor dit ene antwoord en bewaart hij sleutel noch tekst.

read blijft false tot het bericht volledig is opgehaald of als gelezen is gemarkeerd. Voeg keep_unread=true toe aan de volledige aanvraag om te kijken zonder te markeren.

Een bericht lezen

curl https://anonym.es/api/v1/mail/addresses/17/messages/2 \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "X-Mail-Key: ADDRESS_KEY"

Het volledige bericht voegt deze velden toe aan de lijstvelden:

VeldTypeWat het doet
textstringTekstinhoud.
htmlstringHTML-inhoud, indien aanwezig (in een sandbox tonen).
attachmentsarrayBijlagen met n, name, type, size en url. De url is het downloadadres en vereist hetzelfde token.
authobjectVerificatieresultaten van Cloudflare: spf, dkim, dkim_domain, dmarc.

Antwoorden mag alleen als verified true is.

Een bericht als gelezen of ongelezen markeren:

curl -X PATCH https://anonym.es/api/v1/mail/addresses/17/messages/2 \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"read": false}'

Beantwoorden

curl -X POST https://anonym.es/api/v1/mail/addresses/17/messages/2/reply \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "X-Mail-Key: ADDRESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Confirmed, thanks."}'

Het antwoord gaat naar het From-adres van het bericht, in dezelfde thread (In-Reply-To en References), en telt mee voor de antwoorden per dag van het abonnement.

Een bericht verzenden

curl -X POST https://anonym.es/api/v1/mail/addresses/17/send \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"[email protected]","subject":"Hello","text":"Sent from a temporary address."}'
VeldTypeWat het doet
tostring, verplichtAdres van de ontvanger.
subjectstring, verplichtOnderwerp.
textstring, verplichtBerichttekst (platte tekst, tot 4000 tekens).

Verzonden

curl https://anonym.es/api/v1/mail/addresses/17/sent \
  -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
  -H "X-Mail-Key: ADDRESS_KEY"
VeldTypeWat het doet
idintegerNumeriek id van het verzonden item.
kindstringreply of free.
tostringOntvanger.
subjectstringOnderwerp.
textstringDe verzonden tekst.
created_atstringISO 8601, UTC.
reply_tointeger | nullId van het beantwoorde bericht; null bij een vrije verzending.

Tijdelijke e-mail per abonnement

PlanAdressen tegelijkNieuwe adressen per uurLevensduurVerlengingenAntwoorden / dagVrije verzendingen / dagDomeinen
Free 1 10 2 h 2 0 0 4
Pro 3 30 12 h 6 1 0 9
Pro+ 10 60 2 d 6 3 1 14
Max 30 150 7 d 7 10 2 23
Enterprise onbeperkt onbeperkt 30 d onbeperkt onbeperkt onbeperkt 23

Fouten

Fouten worden in één JSON-formaat teruggegeven:

{
  "ok": false,
  "error": "taken",
  "message": "This name is already taken.",
  "field": "name",
  "suggest": ["my-article-26", "my-my-article", "my-article-link"]
}

field bevat de naam van de foutieve parameter, of null wanneer de fout geen specifiek veld betreft. Een bezette naam voegt suggest toe, een betaalde optie upgrade, quota en snelheidslimieten de header Retry-After.

HTTPBetekenis
400Fout in de verzoekparameters
401Token ontbreekt of is ongeldig
403Het plan of het tokentype staat deze aanroep niet toe
404De link bestaat niet of is van iemand anders
405Methode niet toegestaan voor dit pad
409De eigen naam is bezet
429Snelheidslimiet of quota opgebruikt, zie Retry-After
501PNG is op deze server niet beschikbaar, vraag svg op
Alle foutcodes
CodeHTTPVeldWat het doet
bad_request400Ongeldig verzoek.
bad_url400urlHet adres ontbreekt of is geen geldige http(s)-URL.
blocked400urlNaar deze bestemming kan niet worden gelinkt.
bad_name400nameDeze naam is niet toegestaan.
dirty400nameDeze naam is niet toegestaan.
brand400nameDeze naam lijkt op een merknaam en kan niet worden gebruikt.
reserved400nameDeze naam is gereserveerd.
too_short400nameDe naam is te kort voor je plan.
sub_format400nameEen subdomeinnaam bestaat uit 3 tot 32 letters, cijfers of koppeltekens.
sub_main400domainSubdomeinlinks bestaan alleen op de extra domeinen.
name_batch400nameEen eigen naam werkt voor één adres, niet voor een batch.
taken409nameDeze naam is al bezet.
note_long400noteDe notitie is langer dan je plan toestaat.
note_required400noteEen link met alleen een notitie heeft een notitie nodig.
bad_tag400tagsTags: maximaal 5, elk maximaal 24 tekens.
pro_only403Deze optie vereist een betaald plan.
max_only403Subdomeinlinks vereisen het plan Max.
account_only403Deze aanroep vereist een accounttoken.
limit429De linkquota voor deze periode is opgebruikt.
domain_limit429urlDe daglimiet voor links naar deze site zonder account is op.
ai_limit429nameTe veel eigen namen dit uur, probeer het later opnieuw.
rate_limited429Te veel verzoeken, doe het rustiger aan.
busy429Er worden te veel links tegelijk gemaakt, probeer het zo opnieuw.
auth401Token ontbreekt of is ongeldig.
not_found404Die link bestaat niet.
no_route404Dat endpoint bestaat niet.
method405Methode niet toegestaan.
fetch500De link kon niet worden gemaakt, probeer het opnieuw.
qr_unavailable501qr_formatPNG-QR-codes zijn op deze server niet beschikbaar, vraag svg op.
no_address404Dat adres bestaat niet.
no_message404Dat bericht bestaat niet.
bad_domain400domainDit domein zit niet in je abonnement.
addr_limit429De adreslimiet van het abonnement is bereikt. Verwijder er eerst een.
new_rate429De uurlimiet voor nieuwe adressen van het abonnement is bereikt. Probeer het later opnieuw.
extend_limit429Er zijn geen verlengingen meer voor dit adres.
no_expiry400Dit adres verloopt nooit.
address_reserved409Het adres staat in reserve: het abonnement dekt het niet meer. Verleng het abonnement of maak het adres tijdelijk.
pin_plan403Vastgezette adressen horen bij een betaald abonnement.
pin_limit429Het abonnement laat geen vastgezette adressen meer toe.
pin_domain400Adressen op dit domein kunnen niet worden vastgezet.
temp_no_room429Het abonnement heeft geen vrije plek voor dit adres. Verwijder eerst een adres.
unverified403De afzender van dit bericht is niet door de verificatie gekomen, dus erop antwoorden mag niet.
reply_limit429Vandaag zijn er geen antwoorden meer over voor dit adres.
send_limit429Vandaag zijn er geen vrije verzendingen meer over voor dit adres.
send_off403Verzenden hoort niet bij dit abonnement.
bad_to400toGeef een geldig adres van de ontvanger op.
bad_subject400subjectEen onderwerp is verplicht.
empty400textDe tekst van het bericht is leeg.
send_unavailable503Verzenden staat voor dit adres nog niet aan.
send_rejected422toDe maildienst heeft dit bericht geweigerd. Controleer het adres van de ontvanger of probeer het later opnieuw.
send_failed502Het bericht kon niet worden verzonden. Probeer het over een minuut opnieuw.
key_required403De post van dit adres is versleuteld. Stuur de adressleutel mee in de header X-Mail-Key.
bad_key403De header X-Mail-Key bevat niet de sleutel van dit adres.
site_address403Dit adres is op de site aangemaakt. De sleutel staat in de browser en de API kan hem niet vervangen.
worker502De maildienst reageerde niet. Probeer het zo meteen opnieuw.

Snelheidslimieten

Elke aanroep kost eenheden en elk plan heeft een budget aan eenheden per minuut (zie Plannen en limieten). Een leesactie kost 1 eenheid, een lijstpagina 2, een QR-code 3, een wijziging 3, een verwijdering 2, een aanmaak 5 plus 1 per adres. Elk antwoord draagt deze headers:

HeaderWaarde
X-RateLimit-LimitBudget aan eenheden per minuut
X-RateLimit-RemainingResterende eenheden in de huidige minuut
X-RateLimit-ResetSeconden tot het budget wordt vernieuwd
Retry-AfterBij 429: seconden wachten voor een nieuwe poging

Binnen elk venster van 10 seconden kan hoogstens een kwart van het minuutbudget worden besteed, met een minimum van 20 eenheden. Wanneer het budget op is, antwoordt de API met status 429.

Plannen en limieten

De exacte limieten van elk plan. Links tellen per dag en IP-adres in Free en per maand en account in betaalde plannen. De laatste kolom noemt de instellingen die een plan kan gebruiken.

PlanLinksEigen namen per uurKortste naamNotitielengteEenheden per minuutInstellingen
Free 5 per dag per IP-adres 5 5 0 60 geen
Pro 500 per maand 10 3 300 150 password, expires_days, max_hits, edit, tags, note, domain, delay, qr_logo
Pro+ 2,000 per maand 50 3 2,000 400 password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, delay, qr_logo
Max 50,000 per maand 200 3 5,000 1,000 password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, sub, delay, qr_logo
Enterprise onbeperkt onbeperkt 3 5,000 2,500 password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, sub, delay, qr_logo

Zonder accounttoken telt het maken mee voor de Free-quota van het IP-adres: 5 links per dag. Links naar een domein dat minder dan een jaar geleden is geregistreerd, delen een gastlimiet van 5 per dag, wie ze ook maakt. Per aanroeper kunnen hoogstens 2 links tegelijk in aanmaak zijn.

OpenAPI-specificatie

De volledige technische beschrijving als OpenAPI 3.1-document: https://anonym.es/api/v1/openapi.json

Het bevat schema's en voorbeelden van alle verzoeken en antwoorden, de planlimieten, de naamregels en de foutcodes. Het is geschikt voor Swagger UI, Postman, Insomnia en clientgeneratoren.