You can now hand Seltz an open-ended question and get back a grounded, cited answer that took real research to produce, without writing the research loop yourself.
The new Seltz Agent API run a full plan → search → read → synthesize cycle on your behalf and returns a schema-valid, sourced result, typically within minutes.
Agent is available as a new set of endpoints alongside Search and Answer. Where Answer gives you a fast, grounded response to a single question, Agent takes on questions that need several rounds of searching and reading to answer well: the kind you'd normally break into steps and run yourself.
How it works
A run starts with one call: send a natural-language query, an optional effort level, and an optional JSON Schema describing the shape you want back.
from seltz import Seltz
client = Seltz()
response = client.agent.create(
query="What are the top three AI infrastructure startups that raised "
"Series B rounds in the last 90 days, and who led each round?",
effort="high",
output_schema={
"type": "json_schema",
"json_schema": {
"name": "company_list",
"schema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"round": {"type": "string"},
"lead_investor": {"type": "string"},
},
"required": ["name", "round", "lead_investor"],
"additionalProperties": False,
},
},
},
"required": ["companies"],
"additionalProperties": False,
},
"strict": True,
},
},
)
print(response.id, response.status)
# run_01J9XYZ... pendingfrom seltz import Seltz
client = Seltz()
response = client.agent.create(
query="What are the top three AI infrastructure startups that raised "
"Series B rounds in the last 90 days, and who led each round?",
effort="high",
output_schema={
"type": "json_schema",
"json_schema": {
"name": "company_list",
"schema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"round": {"type": "string"},
"lead_investor": {"type": "string"},
},
"required": ["name", "round", "lead_investor"],
"additionalProperties": False,
},
},
},
"required": ["companies"],
"additionalProperties": False,
},
"strict": True,
},
},
)
print(response.id, response.status)
# run_01J9XYZ... pendingfrom seltz import Seltz
client = Seltz()
response = client.agent.create(
query="What are the top three AI infrastructure startups that raised "
"Series B rounds in the last 90 days, and who led each round?",
effort="high",
output_schema={
"type": "json_schema",
"json_schema": {
"name": "company_list",
"schema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"round": {"type": "string"},
"lead_investor": {"type": "string"},
},
"required": ["name", "round", "lead_investor"],
"additionalProperties": False,
},
},
},
"required": ["companies"],
"additionalProperties": False,
},
"strict": True,
},
},
)
print(response.id, response.status)
# run_01J9XYZ... pendingYou can check the run status and access the result as follows:
import json
run = client.agent.get(response.id)
print(run.status, run.stop_reason)
result = json.loads(run.output.structured)
print(result)
import json
run = client.agent.get(response.id)
print(run.status, run.stop_reason)
result = json.loads(run.output.structured)
print(result)
import json
run = client.agent.get(response.id)
print(run.status, run.stop_reason)
result = json.loads(run.output.structured)
print(result)
Every field in a structured result is traceable back to a source: grounding maps each field path to the citations that support it, and if a run can't find grounded support for a value, it returns null there rather than guessing. Here's an example result object:
{
"id": "run_01J9XYZ...",
"status": "completed",
"stop_reason": "finished",
"output": {
"structured": {
"companies": [
{"name": "...", "round": "Series B", "lead_investor": "..."}
]
},
"sources": [
{"id": 1, "url": "https://..."}
],
"grounding": [
{
"field": "companies.0.lead_investor",
"citations": [{"source_id": 1, "url": "https://..."}]
}
]
}
}{
"id": "run_01J9XYZ...",
"status": "completed",
"stop_reason": "finished",
"output": {
"structured": {
"companies": [
{"name": "...", "round": "Series B", "lead_investor": "..."}
]
},
"sources": [
{"id": 1, "url": "https://..."}
],
"grounding": [
{
"field": "companies.0.lead_investor",
"citations": [{"source_id": 1, "url": "https://..."}]
}
]
}
}{
"id": "run_01J9XYZ...",
"status": "completed",
"stop_reason": "finished",
"output": {
"structured": {
"companies": [
{"name": "...", "round": "Series B", "lead_investor": "..."}
]
},
"sources": [
{"id": 1, "url": "https://..."}
],
"grounding": [
{
"field": "companies.0.lead_investor",
"citations": [{"source_id": 1, "url": "https://..."}]
}
]
}
}Skip output_schema and you get cited Markdown instead, with inline [n] references into the same sources list.
Use cases for Agent
Research questions that need synthesis, not just retrieval. "Who are our top three competitors doing X, and how do their approaches differ?" — questions that need several searches and some judgment to answer well.
Structured extraction at the end of a research task. Ask for a JSON Schema-shaped result and skip the step of parsing an answer out of prose.
Anything today's /v1/answer doesn't have time to fully work through. Agent is built for longer, deeper passes — Answer stays the right tool for a fast, single-pass response.
Try Seltz Agent
Seltz Agent is available now. Grab an API key at console.seltz.ai/api-keys and read the Agent quickstart and API reference to get started.
Ciao, The Seltz Team