Build with research.
Ship with evidence.
Give your application a research engine. Start a run, follow the work and bring cited findings back into your product—with explicit access, effort and review controls.
# Server-side: set PROOFLINE_API_ORIGIN and PROOFLINE_KEY.
# Persist REQUEST_ID and reuse it only for this same request.
curl "$PROOFLINE_API_ORIGIN/v1/run?wait=60" \
-H "Authorization: Bearer $PROOFLINE_KEY" \
-H "Idempotency-Key: $REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{
"question": "Research Acme Logistics and its supplier risks",
"effort": "standard"
}'
# 200: completed result. 202: pending, with poll_url and stream_url.
# Follow the returned poll_url with the same authentication.200 returns a result. 202 returns the URLs to follow it.
Code examples only; no request is executed here.
Your request. Our research. Your application’s next step.
Use the one-call API to get started, or workspace routes when you need detailed control over agents, plans and reports.
- A scoped request
Send the brief and permitted context with a workspace API key.
runs:write - An inspectable run
Follow progress, then retrieve the report and its supporting references.
reports:read - Your review workflow
Use structured findings in your application and review proposed actions.
Evidence + open questions
Read the result and its evidence.
A completed one-call request returns a result. Inspect the run status, sources, and any unresolved findings before your application relies on the answer.
Read the relevant guide ↗{
"status": "completed",
"answer": "Example cited research brief…",
"claims": []
}Keep the report and source references together.
INTEGRATION MAP / ONE API, MANY WAYS IN
Go deeper when your workflow needs it.
Follow a research request through completion and retrieve its findings with source references. The API documentation covers the integration details.
- A live key with runs:write, runs:read and reports:read.
- An eligible plan for API writes.
- An Idempotency-Key for API-key POST requests to workspace routes.
- Secrets stored on your server, outside browser bundles.
// Server-side: configure your API origin, live key and workspace.
// Persist the idempotency key with this request; reuse it for retries.
const origin = process.env.PROOFLINE_API_ORIGIN;
const workspace = "your-workspace";
const headers = {
Authorization: `Bearer ${process.env.PROOFLINE_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
};
const response = await fetch(
`${origin}/v1/workspaces/${workspace}/runs`,
{
method: "POST",
headers,
body: JSON.stringify({
question: "Research Acme Logistics and its supplier risks",
effort: "standard",
require_plan_approval: false,
}),
}
);
if (!response.ok) throw new Error(await response.text());
const run = await response.json();
console.log(run.id, run.status, run.charged_micro_usd);A few clear primitives. A lot you can build.
Use the same objects for a single question, repeated checks or a coordinated campaign.
agentA method you can version.
Instructions, skills, permitted tools and output configuration.
runOne execution to follow.
A question, lifecycle, cost and inspectable research result.
reportEvidence you can use.
Claims, sources and structured answers for your application.
batchThe same check, many inputs.
Apply an agent to rows and inspect each result independently.
scheduleA workflow that comes back.
Cron or webhook triggers with explicit inputs and execution history.
actionA proposed external change.
Inspect the destination and apply your workspace approval policy.
Follow a run. Handle every outcome.
A request starting successfully does not mean the research has finished. Keep waiting, review and terminal states distinct.
Illustrative lifecycle. Real runs may wait for approval, fail, be cancelled or retain a partial answer.
Connect the event stream ↗run.completed- Research finished; retrieve the result and inspect its status.
run.failed- Handle the failure and any retained context.
report.ready- The report rendering is ready.
batch.completed- Inspect the batch and its individual row results.
Verify X-Signature against the raw body, acknowledge durable receipt and deduplicate before side effects.
Good integrations handle what happens next.
Idempotency
Retry a logical write with the same key and body. Avoid duplicate work after a timeout.
Read the guide ↗02Limits & cost
Honor rate limits, choose the effort and record actual charges from the finished run.
Read the guide ↗03Evidence & review
Keep claims and sources with your output. Expose unresolved findings to a reviewer.
Read the guide ↗04Structured outputs
Request typed fields in report.answers, then validate them in your consuming application.
Read the guide ↗Connect through the interface that fits.
Start directly with REST, or see the documentation for current Python, TypeScript and MCP integration options.
Ask your hardest question.
Your first 10 Standard tasks every month are on us.