Read Email Verification Link
TypeScriptUtilityPOST api.upapi.io/email-read-verification-link.postConnect 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.
Request schema
| Field | Type | Description |
|---|---|---|
imapHost | string | IMAP server hostname· default: "imap.gmail.com" |
imapPassreq | string | IMAP password or app password |
imapPort | integer | IMAP server port· default: 993 |
imapUserreq | string | IMAP username (email address) |
mailboxes | array | 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. |
maxRetries | integer | Number of polling attempts· default: 5 |
linkPattern | string | Regex 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 | integer | Milliseconds between retry attempts· default: 10000 |
senderFilterreq | string | Filter emails by sender (e.g. noreply@reddit.com) |
maxAgeMinutes | integer | Only look at emails received within this many minutes· default: 15 |
subjectPattern | string | Regex matched against the subject, to pick one of several mails from the same sender |
recipientFilter | string | Filter by recipient address (useful with catch-all domains) |
Response schema
| Field | Type | Description |
|---|---|---|
toreq | string | Recipient address |
fromreq | string | Sender address |
linkreq | string | First body match — the link to follow |
mailboxreq | string | Which 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 | string | Email subject line |
allLinksreq | array | Every distinct match in the body, in document order |
elapsedMsreq | integer | |
fetchedAtreq | string | |
receivedAtreq | string | When 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.
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 }'