# Power Automate Connector

URL: https://email-validation.org/docs/guides/power-automate/
Updated: 2026-11-06

> Documentation index: https://email-validation.org/llms.txt

Validate email addresses in Power Automate, Power Apps and Logic Apps with our custom connector: actions to validate
one address, run bulk lists, download their results and read your credit balance. You import it into your own
environment from the files below.

**Status: setup guide.** The connector is not certified by Microsoft yet, so it is not in the connector gallery:
import it as a custom connector. Custom connectors need a Power Automate or Power Apps plan that includes premium
connectors.

## Download the files

- [apiDefinition.swagger.json](https://email-validation.org/downloads/power-automate/apiDefinition.swagger.json): the actions and their fields.
- [apiProperties.json](https://email-validation.org/downloads/power-automate/apiProperties.json): the connection (your key and the API host) and
  the two policies that send the key as a bearer token and pick the host.
- [icon.png](https://email-validation.org/downloads/power-automate/icon.png) and [settings.json](https://email-validation.org/downloads/power-automate/settings.json) (the
  file names for Microsoft's `paconn` tool; no environment or account in it).
- [readme.md](https://email-validation.org/downloads/power-automate/readme.md): the connector's description, operations and known limitations.

## Import the connector

**With Microsoft's command line tool** (keeps both policies and the host choice): install it with
`pip install paconn`, put the four files `apiDefinition.swagger.json`, `apiProperties.json`, `icon.png` and
`settings.json` in one folder, and run from there:

```
paconn login
paconn create --settings settings.json
```

`paconn` asks which environment to create the connector in.

**Or in the maker portal**:

1. **Custom connectors > New custom connector > Import an OpenAPI file**, and choose `apiDefinition.swagger.json`.
2. On **General**, upload `icon.png` and set the icon background colour to `#0A1226`. For EU data residency, set
   **Host** to `api-eu.email-validation.org`.
3. On **Definition**, click **New policy** and choose the template **Set HTTP header**: header name `Authorization`,
   header value `Bearer @connectionParameters('api_key')`, action if header exists *override*, run policy on
   *Request*. Without it the key is sent without `Bearer` and refused.
4. Click **Create connector**.

## Connect and try it

1. Create a key on the [API keys page](https://email-validation.org/app/api-keys/) with **Validate addresses** and **Read balance and usage** (both
   on by default; the connection test reads your balance), and **Bulk lists** for the bulk actions. Give it a
   [daily credit cap](https://email-validation.org/docs/authentication/#limits).
2. Create a connection: paste the key alone, without `Bearer`, and choose the API host: `https://api.email-validation.org` or `https://api-eu.email-validation.org`
   ([EU data residency](https://email-validation.org/docs/eu-data-residency/); the same keys and credits).
3. Add **Validate an email address** to a flow with `accepted@sandbox.email-validation.org`: it returns **Status** `valid` and
   costs nothing (every [test address](https://email-validation.org/docs/test-addresses/) is free). Use **Status**, **Reason** and **Action** in
   a condition.

## Actions

| Action | What it does |
|---|---|
| Validate an email address | Checks one address: status, reason, recommended action and the other [result fields](https://email-validation.org/docs/api/validate/#response). |
| Get your credit balance | Your balance and credit lots. |
| Get credit usage by day or by key | Credits used, per day or per API key. |
| Create a bulk job | A [bulk list](https://email-validation.org/docs/bulk/) from an array of addresses (JSON; up to 100,000 addresses, 4 MB). |
| Get a bulk job | The job's status, progress and counts. |
| Cancel a bulk job | Stops a job; unused credits are returned. |
| Start a bulk job | Starts a job created with **Start Automatically** set to No. |
| Download bulk results (CSV) | The results file of a completed job. |
| Get service status | The status of each part of the service. |

## Bulk lists without paying twice

The API cannot tell a re-sent "Create a bulk job" from a new list, and flows re-send failed actions by default. On
**Create a bulk job**, open **Settings** and set **Retry policy** to None and **Asynchronous pattern** to Off. If it
fails with a server error or a timeout, check the [bulk page](https://email-validation.org/app/bulk/) of the dashboard before running the flow
again: the job may exist.

Then wait for the list in a **Do until** loop around **Get a bulk job** (with a delay of a minute or more) until the
status is `completed`, `failed`, `cancelled` or `expired`, or the status is `ready` with an **Error Code** (a start
that was refused, for example for missing credits). Run **Download bulk results (CSV)** only when the status is
`completed`. Its output is file content: pass it straight to a "Create file" action, or read it as text with
`base64ToString(body('Download_bulk_results_(CSV)')?['$content'])`.

Upload CSV files and lists larger than the limit above in the dashboard instead.

## Finished lists

The connector has no trigger yet. Poll as above, or add a flow with the trigger **When an HTTP request is received**,
add its URL in the dashboard under **Webhooks > Add webhook**, and pass that endpoint's id as **Webhook Endpoint ID**
to "Create a bulk job". The flow cannot check our [signature](https://email-validation.org/docs/webhooks/), so treat a delivery only as a hint:
read the job with "Get a bulk job" and act on that answer.
