# Email Read Verification Link (Microsoft Graph) API

> Poll an outlook.com mailbox over Microsoft Graph for a verification LINK in a message body, optionally following a click-tracker through a proxy. For accounts whose IMAP switch is off. Returns the link or an error.

Category: [Utility APIs](https://upapi.io/apis/utility) · Last updated 2026-11-02

## How to call it

- Endpoint: `POST https://api.upapi.io/email-read-verification-link-graph.post`, key in the `X-Api-Key` header, JSON body.
- Cost: 1 weighted unit per call.
- Timeout: 310 seconds.
- Cache: none; every call runs the operation.
- Try it without writing code: https://app.upapi.io/try/email-read-verification-link-graph.post

```bash
curl -X POST https://api.upapi.io/email-read-verification-link-graph.post \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "pollSeconds": 5, "maxRedirects": 5, "graphClientId": "example", "senderContains": "discord", "timeoutSeconds": 120, "followRedirects": true, "graphRefreshToken": "example" }'
```

## Request parameters

- `linkPattern` (string) — Regex for candidate URLs in the RAW html body (default: any http(s) URL)
- `pollSeconds` (number) — Seconds between polls
- `maxRedirects` (integer) — Max redirect hops to follow
- `graphClientId` (string, required) — Microsoft public app client_id
- `senderContains` (string, required) — Substring to match in the From header (e.g. 'discord', 'reddit')
- `timeoutSeconds` (number) — Max seconds to poll
- `followRedirects` (boolean) — Follow click-tracker redirects to resolve the actionable URL
- `minEpochSeconds` (number) — Ignore messages received before this Unix timestamp
- `linkHostContains` (string) — Keep only candidate URLs whose text contains this (e.g. 'discord.com')
- `redirectProxyUrl` (string) — Proxy to follow the tracker through (the account's pinned exit)
- `graphRefreshToken` (string, required) — OAuth refresh token (Mail.Read offline_access)
- `recipientContains` (string) — Substring to match in the To header -- REQUIRED to tell plus-addresses (base+alias@outlook.com) apart when many accounts share one inbox
- `redirectHostContains` (string) — The actionable URL's host+path (e.g. 'discord.com/verify'): a candidate that already contains it is returned directly; otherwise candidates are followed until a hop contains it

## Response fields

- `link` (string)
- `error` (string)
- `subject` (string)
- `success` (boolean, required)
- `allLinks` (array)
- `elapsedMs` (integer, required)
- `receivedAt` (string)

## Example request and response

The example response is generated from the published output schema: it shows the shape and field names, not values from a recorded call.

```json
{
  "pollSeconds": 5,
  "maxRedirects": 5,
  "graphClientId": "example",
  "senderContains": "discord",
  "timeoutSeconds": 120,
  "followRedirects": true,
  "graphRefreshToken": "example"
}
```

```json
{
  "link": "example",
  "error": "example",
  "subject": "example",
  "success": false,
  "allLinks": [
    "example"
  ],
  "elapsedMs": 1,
  "receivedAt": "example"
}
```

## Frequently asked questions

### How much does the Email Read Verification Link (Microsoft Graph) API cost per call?

Each call spends 1 weighted unit of your plan's monthly quota. Full pricing is at https://upapi.io/pricing.

### How do I authenticate to the Email Read Verification Link (Microsoft Graph) API?

Send your key in the X-Api-Key header. A free guest key is available without creating an account.

### Are Email Read Verification Link (Microsoft Graph) API responses cached?

No — every call runs the operation live; responses are not cached.

## More Utility APIs

- [Email Read Verification Code (Microsoft Graph)](https://upapi.io/apis/utility/email-read-verification-code-graph)
- [Read Email Verification Link](https://upapi.io/apis/utility/email-read-verification-link)
- [Read Email Verification Code](https://upapi.io/apis/utility/email-read-verification-code)
- [Email Generate Address](https://upapi.io/apis/utility/email-generate-address)
