API Documentation
Everything you need to integrate Net Tools into your application.
Authentication
All API endpoints require authentication. You can authenticate using either a JWT access token or an API key.
API Key (recommended for server-to-server)
Pass your API key in the X-API-Key header.
curl -H "X-API-Key: ipt_your_key_here" \
https://net-tools.gleny.dev/api/ip/8.8.8.8JWT Bearer Token
Pass the access token from login in the Authorization header.
curl -H "Authorization: Bearer eyJhbGci..." \
https://net-tools.gleny.dev/api/ip/8.8.8.8Endpoints
/api/ip/{address}Look up geolocation data for a specific IP address.
Response
{
"ip": "8.8.8.8",
"country": "United States",
"countryCode": "US",
"continent": "North America",
"continentCode": "NA"
}/api/ip/meLook up geolocation data for the caller's IP address.
Response
Same format as above.
/api/auth/registerCreate a new account.
Request Body
{
"email": "[email protected]",
"password": "minimum8chars"
}Response
{
"accessToken": "eyJhbG...",
"refreshToken": "base64...",
"expiresAt": "2026-02-28T18:00:00Z",
"user": {
"id": "guid",
"email": "[email protected]",
"tier": "Free"
}
}/api/auth/loginSame request/response format as register.
/api/auth/refreshRefresh an expired access token.
Request Body
{ "refreshToken": "base64..." }/api/keysCreate a new API key. Requires JWT auth.
Request Body
{ "name": "My App" }Response
{
"id": "guid",
"name": "My App",
"prefix": "ipt_abc12345",
"key": "ipt_full_key_here",
"createdAt": "2026-02-28T17:00:00Z"
}⚠ The full key is only returned once at creation. Store it securely.
/api/keysList all your API keys (prefix only, not full key).
/api/keys/{id}Revoke an API key. This cannot be undone.
/api/usageGet your current usage statistics.
Response
{
"requestsToday": 12,
"dailyLimit": 50,
"requestsThisMinute": 2,
"minuteLimit": 5,
"tier": "Free"
}/api/usage/history?limit=20Get your recent IP lookup history.
Rate Limits
Rate limits are applied per user. When exceeded, the API returns 429 Too Many Requests.
| Tier | Requests/Day | Requests/Minute |
|---|---|---|
| Free | 50 | 5 |
| Pro | 10,000 | 60 |
| Enterprise | 100,000 | 300 |
Error Codes
| Status | Meaning |
|---|---|
| 400 | Invalid request (e.g., bad IP format) |
| 401 | Missing or invalid authentication |
| 404 | IP not found in database |
| 409 | Conflict (e.g., email already registered) |
| 429 | Rate limit exceeded |