Quick start
Run your first lookup
- Sign in. Open the dashboard and create a named API key.
- Save the key. The full key is displayed only once.
- Send a request. Put the key in the Bearer authorization header.
- Review usage. Every request that reaches the lookup service counts toward the monthly quota.
During beta, signed-in accounts receive Team access with 10,000 monthly lookups and up to 10 active API keys.
cURL
curl -X POST https://kylgpt.com/api/v1/lookup \
-H "Authorization: Bearer kylgpt_live_REPLACE_WITH_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"3307 Brenner Pass, Louisville, KY 40241"}'Authentication
Use a Bearer API key
Add your key to every API request as Authorization: Bearer <api_key>. Keys begin with kylgpt_live_. Invalid or revoked keys return 401.
Lookup endpoint
POST /lookup
Use a complete Kentucky street address whenever possible. Coordinates are also accepted for server-to-server workflows.
FieldTypeRequirement
addressstringRequired unless coordinates are providedlatnumberRequired with lng when address is omittedlngnumberRequired with lat when address is omittedAddress request
{
"address": "3307 Brenner Pass, Louisville, KY 40241"
}Coordinate request
{
"lat": 38.31,
"lng": -85.58
}JavaScript
const response = await fetch("https://kylgpt.com/api/v1/lookup", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KYLGPT_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
address: "3307 Brenner Pass, Louisville, KY 40241"
})
});
const data = await response.json();
if (!response.ok) throw new Error(data.error);
console.log(data);Python
import os
import requests
response = requests.post(
"https://kylgpt.com/api/v1/lookup",
headers={
"Authorization": f"Bearer {os.environ['KYLGPT_API_KEY']}",
"Content-Type": "application/json",
},
json={"address": "3307 Brenner Pass, Louisville, KY 40241"},
timeout=30,
)
response.raise_for_status()
print(response.json())Usage endpoint
GET /usage
Retrieve the current period’s used count, quota, reset date, effective plan, and API-key allowance.
cURL
curl https://kylgpt.com/api/v1/usage \
-H "Authorization: Bearer kylgpt_live_REPLACE_WITH_YOUR_KEY"Responses
Lookup response fields
FieldDescription
resultJurisdiction, rates, confidence, warnings, tax-code notes, and source evidence.usageCurrent-period usage, quota, and reset date.data_versionThe LGPT source schedule associated with the result.history_idThe saved evidence-trail record for the lookup.Example response
{
"result": {
"selected_jurisdiction": {
"name": "Hills And Dales",
"rate": {
"jurisdiction_code": "0448"
}
},
"confidence": "review needed",
"warnings": []
},
"usage": {
"used": 1,
"quota": 10000,
"resetAt": "2026-08-01T00:00:00.000Z"
},
"data_version": "2026-2027",
"history_id": "lookup-history-id"
}Errors
HTTP status reference
StatusMeaning
400Invalid JSON, missing address/coordinates, or address validation failed.401The API key is missing, invalid, revoked, or no longer belongs to an account.402An active paid plan or trial is required when beta access is disabled.424Account storage is temporarily unavailable.429The account’s monthly lookup quota has been reached.502The lookup service returned an unexpected upstream error.504The lookup service timed out before returning a result.Key security
Keep API keys on your server
- Store keys in encrypted environment variables or a secrets manager.
- Do not commit keys to source control or embed them in browser code.
- Avoid recording full keys in application logs.
- Revoke and replace a key immediately if it is exposed.