The translation
The ipify facts are from its own site and the README of its source repository as read on 4 November 2026.
| Call | ipify | aisenseapi.com |
|---|---|---|
| Your address as JSON | https://api.ipify.org?format=json | https://aisenseapi.com/services/v1/client_ip |
| The answer | {"ip":"98.207.254.136"} | {"ip":"203.0.113.10"} |
| Plain text | https://api.ipify.org with no parameter | JSON only; jq -r .ip gives the bare address |
| JSONP | ?format=jsonp&callback=name | Not offered; the CORS header lets browser code call the JSON directly |
| IPv6 | api6.ipify.org for IPv6 requests only, api64.ipify.org for either family | The host answers over IPv4, so the address returned is the IPv4 address of the last hop |
| Limits | States no limit | 5,000 requests per address per day, shared across every endpoint |
| Account or key | None | None |
| HTTPS | Yes; some of its code samples use plain HTTP | HTTPS only |
| CORS | Not stated; its browser samples use JSONP | Permissive CORS header on the answer |
| Caching | Not stated | cache-control: no-store, so every call is a fresh look |
| Logging | States that no visitor information is logged | Requests are logged like every other call; see privacy for retention |
| Source | Open source, hosted on a platform it names | A hosted service |
| What comes after the address | A separate geolocation product under the same name | IP reverse lookup and IP datetime, free, on the same host |
What differs
- One format. ipify answers in text, JSON or JSONP depending on a parameter. This endpoint answers JSON, always the same one field. A shell script takes the address with
jq -r .ip, a browser reads it withfetchand the CORS header, and a device parses one short JSON document. - IPv4. ipify has hosts for IPv6 requests and for either family. This host is reached over IPv4, so a dual-stack client sees its IPv4 egress address and an IPv6-only client has no route to it. If what you need is your IPv6 address, use
api6.ipify.org. - A quota. ipify states no limit. Here every endpoint shares 5,000 requests per address per day. A script that checks its address once a minute spends 1,440 of them; a status page that checks on every load should think about how often.
- Logging. ipify states that it logs no visitor information. This service keeps ordinary request logs, which hold the address, for the period the privacy policy gives. For a one-off check that makes no difference; a privacy-sensitive caller should know it.
- What the address means. On both services it is the public address of whatever the traffic last passed through: a home router, a corporate NAT, a VPN or a cloud egress gateway, not the address on your own interface.
- The next question. Knowing the address, a script often asks where it is or what time it is there. Those answers are free on the same host: country, region and time zone from the IP reverse lookup, and the local time from IP datetime.
From a shell, a browser or a device
In a shell:
curl -s https://aisenseapi.com/services/v1/client_ip
# {"ip":"203.0.113.10"}
curl -s https://aisenseapi.com/services/v1/client_ip | jq -r .ip
# 203.0.113.10In a browser, without JSONP, because the answer carries a permissive CORS header:
const answer = await fetch("https://aisenseapi.com/services/v1/client_ip");
const { ip } = await answer.json();On an ESP32 with the Arduino core, the same call over TLS; setInsecure() skips certificate verification, which is fine for reading your own address and not fine for anything you must trust:
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
WiFiClientSecure client;
client.setInsecure();
HTTPClient http;
http.begin(client, "https://aisenseapi.com/services/v1/client_ip");
int code = http.GET();
String body = http.getString(); // {"ip":"203.0.113.10"}
http.end();To verify a VPN or an egress gateway, call once before connecting and once after; the two addresses should differ.
The field
| Field | Type | Meaning |
|---|---|---|
| ip | string | The public address the request arrived from, as a dotted quad. |
The answer is sent with cache-control: no-store, so neither the browser nor a proxy on the way answers from a copy.
Errors
| Case | Status | What it means |
|---|---|---|
| The day's requests used up | 429 | The shared limit of 5,000 requests per address per day; wait for the reset. |
Every refusal is JSON with error and fix.
Privacy and limits
The address you ask about is the address you call from, so it is in the request log of this service as it is in that of any web server; see our privacy policy for log retention. ipify states that it logs no visitor information; if that matters for your use, it is a reason to choose ipify.
Every path shares the service-wide ceiling of 5,000 requests per IP address per day. ipify, for comparison, states no limit and no account, offers text, JSON and JSONP, and runs separate hosts for IPv6; those are its statements as of November 2026 and may change.