# ipify

> Look up your public IP address from ipify's keyless public API, no account or API key required. Works with both IPv4 and IPv6, and can check the address against an allow-list.

App · Utilities · 3 actions. Web page: https://docs.lodol.com/docs/integrations/ipify

## Actions

### Check public IP against an allow-list

Answer whether the public IP address ipify sees is one of the addresses or CIDR ranges given, so a workflow can branch on it: alert when Lodol's outbound address has drifted off a third party's allow-list, or confirm it before a call that depends on it. It answers yes or no rather than failing.

**Inputs**

- Allowed addresses (`allowed`, list, required): The addresses or ranges to check against, as a list or separated by commas: single addresses such as 203.0.113.7 or 2001:db8::1, and ranges in CIDR notation such as 203.0.113.0/24 or 2001:db8::/32.
- IP version (`ip_version`, text): Which address family to ask for: 'ipv4' (the default) asks api.ipify.org, 'ipv6' asks api6.ipify.org and fails when Lodol has no IPv6 route, and 'any' asks api64.ipify.org for whichever family the network uses. One of: `ipv4` (IPv4 (default)), `any` (Automatic (IPv4 or IPv6)), `ipv6` (IPv6 only). Default: `ipv4`.

**Outputs**

- `allowed` (true/false): Whether the address is in one of the allowed addresses or ranges.
- `checked` (list): The allowed entries as checked, in CIDR notation, repeats removed.
- `ip` (text): The public IP address ipify saw the request come from.
- `matched` (text): The allowed address or range the address fell in, or null when none did.
- `version` (text): Which family the address is: 'ipv4' or 'ipv6'.

**Example output**

```json
{
  "allowed": true,
  "checked": [
    "203.0.113.7/32",
    "98.207.254.0/24"
  ],
  "ip": "98.207.254.136",
  "matched": "98.207.254.0/24",
  "version": "ipv4"
}
```

### Get public IP address

Look up the public IP address that ipify sees for the outbound request: the address a third-party service sees when Lodol calls it. Choose IPv4, IPv6, or let ipify return whichever address family the network provides.

**Inputs**

- IP version (`ip_version`, text): Which address family to ask for: 'ipv4' (the default) asks api.ipify.org, 'ipv6' asks api6.ipify.org and fails when Lodol has no IPv6 route, and 'any' asks api64.ipify.org for whichever family the network uses. One of: `ipv4` (IPv4 (default)), `any` (Automatic (IPv4 or IPv6)), `ipv6` (IPv6 only). Default: `ipv4`.

**Outputs**

- `ip` (text): The public IP address ipify saw the request come from.
- `version` (text): Which family the address is: 'ipv4' or 'ipv6'.

**Example output**

```json
{
  "ip": "98.207.254.136",
  "version": "ipv4"
}
```

### Get public IPv4 and IPv6 addresses

Look up both public addresses in one step, from api.ipify.org and api6.ipify.org. A network without an IPv6 route is common and not an error: that family comes back empty with the reason under 'problems'. The step fails only when neither address can be found.

**Inputs**: None.

**Outputs**

- `has_ipv4` (true/false): Whether an IPv4 address was found.
- `has_ipv6` (true/false): Whether an IPv6 address was found.
- `ipv4` (text): The public IPv4 address, or null if none.
- `ipv6` (text): The public IPv6 address, or null if none.
- `problems` (list): Why a family is missing, one sentence each; empty when both were found.

**Example output**

```json
{
  "has_ipv4": true,
  "has_ipv6": true,
  "ipv4": "98.207.254.136",
  "ipv6": "2a00:1450:400f:80d::200e",
  "problems": []
}
```
