Python Guide¶
All examples use httpx for HTTP requests. Install it with:
pip install httpx
Basic Request¶
import httpx
API_KEY = "YOUR_KEY"
BASE = "https://dns.toolkitapi.io/v1"
response = httpx.post(
f"{BASE}/lookup",
headers={"X-API-Key": API_KEY},
params={"domain": "toolkitapi.io", "type": "A"},
)
response.raise_for_status()
data = response.json()
print(data)
Reusable Client¶
For multiple requests, use a persistent client to benefit from connection pooling:
import httpx
client = httpx.Client(
base_url="https://dns.toolkitapi.io/v1",
headers={"X-API-Key": "YOUR_KEY"},
timeout=30.0,
)
# DNS lookup
dns = client.get("/lookup", params={"domain": "toolkitapi.io", "type": "A"}).json()
# WHOIS
whois = client.get("/whois", params={"domain": "toolkitapi.io"}).json()
client.close()
Async Requests¶
import httpx
import asyncio
async def lookup(domain: str) -> dict:
async with httpx.AsyncClient(
base_url="https://dns.toolkitapi.io/v1",
headers={"X-API-Key": "YOUR_KEY"},
) as client:
r = await client.get("/lookup", params={"domain": domain, "type": "A"})
r.raise_for_status()
return r.json()
result = asyncio.run(lookup("toolkitapi.io"))
Error Handling¶
import httpx
try:
r = httpx.get(
"https://dns.toolkitapi.io/v1/lookup",
headers={"X-API-Key": "YOUR_KEY"},
params={"domain": "toolkitapi.io", "type": "A"},
)
r.raise_for_status()
except httpx.HTTPStatusError as e:
error_detail = e.response.json().get("detail", "Unknown error")
print(f"API error {e.response.status_code}: {error_detail}")
except httpx.RequestError as e:
print(f"Connection error: {e}")
File Uploads (Image/PDF)¶
import httpx
with open("photo.png", "rb") as f:
r = httpx.post(
"https://image.toolkitapi.io/v1/image/convert",
headers={"X-API-Key": "YOUR_KEY"},
files={"file": ("photo.png", f, "image/png")},
data={"format": "webp", "quality": "85"},
)
with open("photo.webp", "wb") as out:
out.write(r.content)