# Arul's Public APIs

> Find out which public IP address your workflows reach the internet from, using Arul's Public APIs - a free, keyless web service with no account and no API key. Get the address to paste into a third-party allow-list, or check it against the addresses you expect so a change is caught before it breaks every integration that allow-listed the old one.

App · Utilities · 2 actions. Web page: https://docs.lodol.com/docs/integrations/arul-public-apis

## Actions

### Check this workflow's IP address

Check whether this workflow still calls out from an address you expect, and answer with a plain true or false to branch on. This is the check that catches the day an outbound address changes, which is the day every integration that allow-listed the old one stops working. Write the list as single addresses (203.0.113.7), as CIDR ranges (203.0.113.0/24), or as a mix of both.

**Inputs**

- Expected addresses or ranges (`expected`, list, required): The addresses this workflow is supposed to call out from. Each entry is either a single IP address (203.0.113.7) or a CIDR range (203.0.113.0/24), and the two can be mixed. An entry of the other address family simply does not match, so a list covering both IPv4 and IPv6 is fine. At most 100 entries.

**Outputs**

- `expected` (list)
- `ip` (text)
- `is_ipv4` (true/false)
- `is_ipv6` (true/false)
- `matched` (text)
- `matches` (true/false)
- `source` (text)
- `version` (text)

**Example output**

```json
{
  "expected": [
    "199.199.199.0/24",
    "203.0.113.7"
  ],
  "ip": "199.199.199.199",
  "is_ipv4": true,
  "is_ipv6": false,
  "matched": "199.199.199.0/24",
  "matches": true,
  "source": "json",
  "version": "IPv4"
}
```

### Get this workflow's IP address

Get the public IP address this workflow's requests go out from - Lodol's own outbound address, which is what a third-party API means when it asks you to allow-list 'your' IP. It is not the address of whoever is looking at the workflow, because the request is made by Lodol's servers. Comes back with whether it is IPv4 or IPv6, which decides what an allow-list entry has to look like.

**Inputs**: None.

**Outputs**

- `ip` (text)
- `is_ipv4` (true/false)
- `is_ipv6` (true/false)
- `source` (text)
- `version` (text)

**Example output**

```json
{
  "ip": "199.199.199.199",
  "is_ipv4": true,
  "is_ipv6": false,
  "source": "json",
  "version": "IPv4"
}
```
