Zeony Modding Team Development
API Docs
Introduction
Authentication, base URL, and conventions
Base URL
All responses are JSON. Errors always include an
Authentication - Most tool endpoints require an active Discord session (log in via
Rate limits - No hard rate limits are enforced today, but abusive usage may result in IP blocks.
https://zmtlabs.dev
All responses are JSON. Errors always include an
error string field.Authentication - Most tool endpoints require an active Discord session (log in via
/auth/discord). Unauthenticated requests receive
{"error": "unauthorized"} with HTTP 401.Rate limits - No hard rate limits are enforced today, but abusive usage may result in IP blocks.
Public Endpoints
No authentication required
GET
/health
Health check
Public
Response
{
"status": "ok",
"uptime": "3d 4h 12m"
}
GET
/api
Service info
Public
Response
{
"service": "zmtlabs.dev",
"running": true,
"uptime": "3d 4h 12m",
"start_time": 1700000000,
"events": 42398,
"bot_ready": true
}
GET
/api/team-status
Team online status
Public
Response
{
"bot_ready": true,
"members": [
{ "discord_id": "123456789", "status": "online" }
]
}
GET
/api/team-members
Full team member list
Public
Returns all team members with their Discord status, avatar, roles, and metadata.
Response
{
"bot_ready": true,
"members": [ { "discord_id": "...", "status": "online", ... } ]
}
Discord Tools
Discord user / server utilities
GET
/api/tools/user-lookup
Discord user info
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| idrequired | string | Discord user snowflake ID |
Response
{
"id": "123456789012345678",
"username": "user",
"global_name": "User",
"avatar_url": "https://cdn.discordapp.com/...",
"avatar_hq": "https://cdn.discordapp.com/...",
"banner_url": "",
"banner_color": "#5865f2",
"created_at": "Jan 01, 2020",
"badges": ["HypeSquad Bravery"],
"bot": false
}
GET
/api/tools/snowflake
Decode Discord snowflake
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| idrequired | string | Discord snowflake ID |
Response
{
"snowflake": "123456789012345678",
"timestamp_ms": 1579000000000,
"created_berlin": "14.01.2020, 17:46:40",
"created_utc": "14.01.2020, 16:46:40",
"worker_id": 0,
"process_id": 1,
"increment": 0
}
GET
/api/tools/invite
Decode invite link
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| coderequired | string | Invite code or full URL |
Response
{
"code": "zmtlabs",
"guild_name": "Zeony Modding Team",
"guild_id": "...",
"icon_url": "https://cdn.discordapp.com/...",
"member_count": 1200,
"online_count": 80,
"inviter": { "username": "user" },
"channel": "general",
"expires_at": null,
"verification_level": 1
}
POST
/api/tools/discord/webhook
Send test webhook message
Session required
Request Body (JSON)
| Field | Type | Description |
|---|---|---|
| urlrequired | string | Discord webhook URL |
| modeoptional | string | text (default) or embed |
| contentoptional | string | Message content (text mode) |
| titleoptional | string | Embed title (embed mode) |
| descriptionoptional | string | Embed description (embed mode) |
| coloroptional | string | Hex color without # (embed mode) |
Response
{ "success": true, "status": 204 }
Networking Tools
IP, DNS, WHOIS, ports, and more
GET
/api/tools/net/ip
IP / geolocation lookup
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| qoptional | string | IP address or hostname. Omit to look up your own IP. |
Response
{
"resolved_ip": "1.1.1.1",
"country": "Australia",
"countryCode": "AU",
"regionName": "Queensland",
"city": "Brisbane",
"isp": "APNIC and Cloudflare DNS Resolver",
"org": "APNIC Research",
"as": "AS13335 Cloudflare, Inc.",
"lat": -27.4766,
"lon": 153.0166,
"timezone": "Australia/Brisbane"
}
GET
/api/tools/net/dns
DNS record lookup
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| domainrequired | string | Domain name to query |
| typeoptional | string | Record type: A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, SRV, CAA, ALL (default: A) |
Response
{
"domain": "example.com",
"type": "A",
"ttl": 3600,
"records": ["93.184.216.34"]
}
GET
/api/tools/net/whois
WHOIS lookup
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| qrequired | string | Domain name or IP address |
Response
{
"name": "EXAMPLE.COM",
"registrar": "ICANN",
"creation_date": "1995-08-14",
"expiration_date": "2024-08-13",
"status": ["clientDeleteProhibited"],
"name_servers": ["A.IANA-SERVERS.NET"],
"raw": "..."
}
GET
/api/tools/net/headers
Fetch HTTP response headers
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| urlrequired | string | Target URL (https:// prefix optional) |
Response
{
"url": "https://example.com/",
"status_code": 200,
"reason": "OK",
"headers": { "Content-Type": "text/html", ... }
}
POST
/api/tools/net/portscan
TCP port scanner
Session required
Request Body (JSON)
| Field | Type | Description |
|---|---|---|
| hostrequired | string | Hostname or IP address |
| portsrequired | string | Port list/range: 80,443,8000-8100 |
Response
{
"host": "example.com",
"ip": "93.184.216.34",
"scanned": 3,
"open_count": 2,
"open_ports": [80, 443]
}
GET
/api/tools/net/reverseip
Reverse IP lookup
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| hostrequired | string | IP address or hostname |
Response
{ "host": "1.2.3.4", "domains": ["example.com", "other.com"] }
GET
/api/tools/net/iprep
IP reputation check
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| qrequired | string | IP address or hostname |
Response
{
"ip": "1.1.1.1",
"isp": "Cloudflare, Inc.",
"org": "APNIC Research",
"country": "Australia",
"asn": "AS13335 Cloudflare, Inc.",
"proxy": false,
"hosting": true,
"mobile": false
}
GET
/api/tools/net/asn
ASN lookup
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| qrequired | string | IP address or hostname |
Response
{
"ip": "1.1.1.1",
"asn": "AS13335 Cloudflare, Inc.",
"asname": "CLOUDFLARENET",
"isp": "Cloudflare, Inc.",
"org": "APNIC Research",
"country": "Australia",
"region": "Queensland",
"city": "Brisbane"
}
GET
/api/tools/net/subdomains
Subdomain finder via CT logs
Session required
Queries certificate transparency logs via crt.sh to enumerate known subdomains.
Query Parameters
| Name | Type | Description |
|---|---|---|
| domainrequired | string | Root domain (e.g. example.com) |
Response
{
"domain": "example.com",
"count": 14,
"subdomains": ["api.example.com", "mail.example.com", ...]
}
Web Tools
SSL, redirects, robots, headers, OG, sitemap, HTTP requests
GET
/api/tools/net/ssl
SSL certificate info
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| hostrequired | string | Hostname (port 443 is assumed) |
Response
{
"subject": "CN=example.com",
"issuer": "CN=R3, O=Let's Encrypt",
"not_before": "Jan 1 00:00:00 2024 GMT",
"not_after": "Apr 1 00:00:00 2024 GMT",
"sans": ["example.com", "www.example.com"],
"serial": "...",
"version": 3
}
GET
/api/tools/net/redirects
Follow redirect chain
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| urlrequired | string | Starting URL |
Response
{
"chain": [
{ "url": "http://example.com/", "status": 301, "reason": "Moved Permanently" },
{ "url": "https://example.com/", "status": 200, "reason": "OK" }
]
}
GET
/api/tools/net/robots
Fetch robots.txt
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| domainrequired | string | Domain name or URL |
Response
{ "url": "https://example.com/robots.txt", "status": 200, "content": "User-agent: *\n..." }
GET
/api/tools/net/secheaders
Security header analysis
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| urlrequired | string | Target URL |
Response
{
"url": "https://example.com/",
"status": 200,
"headers": { "Strict-Transport-Security": "max-age=...", ... },
"present": 6,
"total": 10,
"score": 60
}
GET
/api/tools/net/cors
CORS policy check
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| urlrequired | string | Target URL |
Response
{
"url": "https://example.com/",
"status": 200,
"cors": { "Access-Control-Allow-Origin": "*" },
"allows_all": true
}
GET
/api/tools/net/sitemap
Fetch sitemap.xml
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| domainrequired | string | Domain name or URL |
Response
{
"url": "https://example.com/sitemap.xml",
"status": 200,
"url_count": 42,
"urls": ["https://example.com/", ...]
}
GET
/api/tools/net/og
Open Graph metadata
Session required
Query Parameters
| Name | Type | Description |
|---|---|---|
| urlrequired | string | Target URL |
Response
{
"url": "https://example.com/",
"title": "Example Domain",
"description": "...",
"image": "https://example.com/og.png",
"site_name": "Example",
"type": "website",
"twitter_card": "summary_large_image",
"all": { "og:title": "...", "twitter:card": "..." }
}
POST
/api/tools/net/httpreq
Send HTTP request
Session required
Request Body (JSON)
| Field | Type | Description |
|---|---|---|
| urlrequired | string | Target URL |
| methodoptional | string | GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS (default: GET) |
| headersoptional | object | Custom request headers as key-value pairs |
| bodyoptional | string | Raw request body string |
Response
{
"url": "https://example.com/",
"status_code": 200,
"reason": "OK",
"time_ms": 142.3,
"headers": { "Content-Type": "text/html", ... },
"body": "...",
"body_length": 1256
}
Encoding / Hashing
Hash generation
GET
/api/tools/hash
Generate hashes for text
Session required
Returns MD5, SHA-1, SHA-256, and SHA-512 hashes for the given text.
Query Parameters
| Name | Type | Description |
|---|---|---|
| textrequired | string | Input text to hash |
Response
{
"md5": "5d41402abc4b2a76b9719d911017c592",
"sha1": "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d",
"sha256": "2cf24dba5fb0a30e26e83b2ac5b9e29e...",
"sha512": "9b71d224bd62f3785d96d46ad3ea3d17..."
}
Report
Submit bug reports, support requests, and suggestions
POST
/api/report
Submit a report
Session required
Sends a Discord embed to the appropriate channel. A confirmation DM is sent to the submitter.
Request Body (JSON)
| Field | Type | Description |
|---|---|---|
| typerequired | string | bug, support, or suggestion |
| titlerequired | string | Short title (max 200 chars) |
| descriptionrequired | string | Detailed description (max 2000 chars) |
Response
{ "success": true }