Read Email Verification Link

TypeScriptUtility
POST api.upapi.io/email-read-verification-link.post

Connect to an IMAP mailbox and extract a link from the BODY of a recent email. Decodes quoted-printable/base64 bodies before matching, so URLs split across lines are returned whole. Polls with retries. Use this for verification mail whose token is a one-time URL rather than a code in the subject.

emailverificationimaputility
AuthAPI key
Cost1 unit
Timeout120s
CacheNone

Request schema

FieldTypeDescription
imapHost
stringIMAP server hostname· default: "imap.gmail.com"
imapPassreq
stringIMAP password or app password
imapPort
integerIMAP server port· default: 993
imapUserreq
stringIMAP username (email address)
mailboxes
arrayMailboxes to search, in order. Omit to search INBOX plus whatever the server flags \All and \Junk (Gmail: All Mail and Spam) — providers routinely file one-time verification links as junk, and searching INBOX alone reports them as never sent.
maxRetries
integerNumber of polling attempts· default: 5
linkPattern
stringRegex matched against the DECODED body. The first capture group is returned when present, otherwise the whole match. Default matches any http(s) URL.· default: "https?://[^\\s\"'<>)\\]]+"
retryDelayMs
integerMilliseconds between retry attempts· default: 10000
senderFilterreq
stringFilter emails by sender (e.g. noreply@reddit.com)
maxAgeMinutes
integerOnly look at emails received within this many minutes· default: 15
subjectPattern
stringRegex matched against the subject, to pick one of several mails from the same sender
recipientFilter
stringFilter by recipient address (useful with catch-all domains)

Response schema

FieldTypeDescription
toreq
stringRecipient address
fromreq
stringSender address
linkreq
stringFirst body match — the link to follow
mailboxreq
stringWhich mailbox the hit came from. A link found in Spam is still a valid link, but it tells the caller the provider is filtering this sender.
subjectreq
stringEmail subject line
allLinksreq
arrayEvery distinct match in the body, in document order
elapsedMsreq
integer
fetchedAtreq
string
receivedAtreq
stringWhen the email was received

Try it

Try it

IMAP password or app password

IMAP username (email address)

Filter emails by sender (e.g. noreply@reddit.com)

IMAP server hostname

IMAP server port

Mailboxes to search, in order. Omit to search INBOX plus whatever the server flags \All and \Junk (Gmail: All Mail and Spam) — providers routinely file one-time verification links as junk, and searching INBOX alone reports them as never sent.

Number of polling attempts

Regex matched against the DECODED body. The first capture group is returned when present, otherwise the whole match. Default matches any http(s) URL.

Milliseconds between retry attempts

Only look at emails received within this many minutes

Regex matched against the subject, to pick one of several mails from the same sender

Filter by recipient address (useful with catch-all domains)

Run this endpoint live

Jump in as a guest — no signup — and run email-read-verification-link.post with your own inputs. Create a free account anytime to get your own API key.

Sign in

Code examples

curl -X POST https://api.upapi.io/email-read-verification-link.post \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "imapHost": "imap.gmail.com", "imapPass": "example", "imapPort": 993, "imapUser": "example", "maxRetries": 5, "linkPattern": "https?://[^\\s\"'\''<>)\\]]+", "retryDelayMs": 10000, "senderFilter": "noreply@reddit.com", "maxAgeMinutes": 15 }'

Developer tools

OpenAPI specImport the spec or collection into Postman, Insomnia, or any codegen tool.