API Reference¶
The Geo Assistant API provides a streaming chat endpoint for geographic queries.
Base URL¶
http://localhost:8000
Endpoint¶
POST /chat¶
Stream chat responses from the geographic assistant agent.
Request Body
{
"thread_id": "uuid-string",
"agent_state_input": {
"messages": [
{
"type": "human",
"content": "Your question here"
}
]
}
}
Schema
thread_id(string): UUID for conversation threadagent_state_input(object):messages(array): Array of message objects withtypeandcontent
Response
Streaming NDJSON format (application/x-ndjson). Each line contains:
{
"thread_id": "uuid-string",
"state": {
"messages": [...],
"place": {...},
"search_area": {...},
"naip_img_bytes": {...}
}
}
Example
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{
"thread_id": "123e4567-e89b-12d3-a456-426614174000",
"agent_state_input": {
"messages": [{"type": "human", "content": "Your question"}]
}
}'
Python Example
import json
import uuid
import httpx
thread_id = str(uuid.uuid4())
request_body = {
"thread_id": thread_id,
"agent_state_input": {
"messages": [{"type": "human", "content": "Your question"}]
},
}
with httpx.stream(
"POST",
"http://localhost:8000/chat",
json=request_body,
timeout=360.0,
) as response:
response.raise_for_status()
for line in response.iter_lines():
if not line:
continue
data = json.loads(line)
state = data.get("state", {})
messages = state.get("messages", [])
# Process messages
for msg in messages:
print(f"{msg['type']}: {msg['content']}")
# Process state updates
# ...