Grounded answers API

What if your software just knew?

Siltstone reads a text once, then answers thousands of questions about it: yes or no, which one, how much, when. Every answer comes typed, with a probability your code can act on.

No card needed · $0.042 per million input tokens · answers are free

Prepared example

Inbox · support@

DA

Dana Whitfield

Charged twice. Still waiting.

Hi team, we were charged twice for our March invoice (INV-2291, £1,840.50, issued 03/03/2026) and nobody has replied to my last two emails. This is the third billing problem this quarter. Please get a manager to call me today, otherwise we'll have to look at other providers. Dana Whitfield, Operations Lead, Northwind Freight

8 questions ready

Does this need a reply today?
Which team should handle it?
Are they asking for money back?
Do they want a manager to call?
How likely are they to leave?
How much was the invoice, in pounds?
When was the invoice issued?
How many billing problems this quarter?
POST /v1/ask · the request behind this
{
"document": "Hi team, we were charged twice for our March invoice (INV-2291, £1,840.50, issued 03/03/2026) and nobody has replied to my last two emails. This is the third billing problem this quarter. Please get a manager to call me today, otherwise we'll have to look at other providers. Dana Whitfield, Operations Lead, Northwind Freight",
"questions": [
{
"id": "urgent",
"type": "bool",
"ask": "Does this need a reply today?"
},
{
"id": "team",
"type": "choice",
"ask": "Which team should handle it?",
"options": [
"billing",
"technical",
"sales"
]
},
{
"id": "refund",
"type": "bool",
"ask": "Are they asking for money back?"
},
{
"id": "manager",
"type": "bool",
"ask": "Do they want a manager to call?"
},
{
"id": "churn",
"type": "score",
"ask": "How likely are they to leave?",
"levels": [
"Happy",
"Complaining",
"Comparing alternatives",
"Will leave unless fixed"
]
},
{
"id": "amount",
"type": "number",
"ask": "How much was the invoice, in pounds?",
"decimals": 2
},
{
"id": "issued",
"type": "date",
"ask": "When was the invoice issued?",
"order": "day_first"
},
{
"id": "repeat",
"type": "number",
"ask": "How many billing problems this quarter?"
}
]
}

How it works

Read once. Ask thousands.

Reading the text is the expensive part. Siltstone does it once, then every question runs against that single read, costing only its own few tokens. Ask more, and each answer gets cheaper.

238 questions

Time

Siltstone667 ms
One LLM call36.5 s

Cost

Siltstone$0.00029
One LLM call$0.038

Faster

55×

than one LLM call

Cheaper

132×

than one LLM call

Per 1,000 answers

$0.0012

826,527 answers for $1

Siltstone times on a single H100 serving the current model, at $0.042 per million input tokens. The LLM is an estimate: every question in one prompt, typical frontier prices ($1.25 in, $10 out per million tokens) and speeds (0.4 s to the first token, then ~80 tokens a second of JSON answers).

Compared

Ask an LLM more, it gets worse. Siltstone doesn't.

Put fifty questions in one LLM prompt and they compete for its attention: answers drift, and 'no' quietly turns into 'yes'. Siltstone answers every question on its own against the same read, so the hundredth is as good as the first.

Accuracy vs questions per request Siltstone One LLM call

Hover or tap a column for its numbers.

60%70%80%90%100%1102450100200SiltstoneOne LLM call
Cost per 1,000 answers
One LLM call$0.24
Siltstone$0.0039

62× cheaper

One 4,000-token text, every question in one request. The LLM is assumed at typical frontier prices, $1.25 in and $10 out per million tokens, with answers returned as JSON; Siltstone at $0.042 per million, answers free.

Benchmarked over 12 documents of ~14,000 tokens, every question sent in one schema-enforced call to a popular frontier model. At 24 questions: 94.8% for Siltstone against 80.2% for the single call.

Question types

Answers your code already understands.

No prose to parse. A bool comes back true or false, a choice as your option's name, a number as a number and a date as an ISO string, each in its own type, each with its confidence.

The text

Survey of mast NW-4471, completed 14/06/2025 at 09:20 by R. Okafor. Operator: Vodafone. Height to the top of the antenna: 22.4 m. Three sectors, bearings 40°, 160° and 280°. Surface rust on two brackets; structure sound. No lightning protection fitted.

Does the text say it? True or false, with the probability on each.

{
"type": "bool",
"ask": "Is lightning protection fitted?"
}
Is lightning protection fitted?No97%
yes3%
no97%

Confidence

Act on the sure ones. Check the rest.

Every answer carries the probability the model put on it. Set a threshold on the request, and each answer below it comes back flagged for review, so the rule in your code is one line.

0.70
0.40confidence1.00

35acted on automatically

5flagged for a person

// the whole rule
if (answer.review) sendToPerson(answer); else act(answer.value);

Illustrative answers. Where to draw the line depends on your texts: measure it on a few dozen you know the answers to.

For developers

One call. Typed all the way down.

Send the text and every question you have about it. Branch on the values; send the flagged ones to a person.

curl https://api.siltstone.ai/v1/ask \
  -H "Authorization: Bearer $SILTSTONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document": "Charged twice for INV-2291 (issued 03/03/2026). Fix it today or I cancel.",
    "questions": [
      { "id": "urgent", "type": "bool", "ask": "Does this need a reply today?" },
      { "id": "team", "type": "choice", "ask": "Which team?",
        "options": ["billing", "technical", "sales"] },
      { "id": "invoice_date", "type": "date", "ask": "When was the invoice issued?" }
    ]
  }'

Response · 200

{
"threshold": 0.7,
"flagged_for_review": 0,
"answers": [
{ "id": "urgent", "type": "bool", "value": true,
"confidence": 0.97, "review": false },
{ "id": "team", "type": "choice", "value": "billing",
"confidence": 0.96, "review": false,
"probabilities": { "billing": 0.96, "technical": 0.03, "sales": 0.01 } },
{ "id": "invoice_date", "type": "date", "value": "2026-03-03",
"parts": { "year": 2026, "month": 3, "day": 3 },
"confidence": 0.96, "review": false }
],
"total_ms": 48.2
}

Values, not prose

true, "billing", 1840.5, "2026-03-03". The type is the contract, so nothing needs parsing.

Up to 2,000 questions

All against one read of the text, in one request. Numbers and dates are written under a grammar, so they always parse.

A probability on everything

Set a threshold and the unsure answers flag themselves. How to read one.

Pricing

Pay for what's read. Answers are free.

$0.042 per million input tokens: your text and your questions. Prepaid credit, no subscription, and $5 to start.

What would it cost me?

Documents a month
Length of each
Questions per document
Of which numbers or dates

A month

$14.45

Per document

$0.00014

3,440 tokens

Your free $5

34,606

documents like these

$0.042

per million input tokens

  • Text and questions billed; answers free
  • Each number or date question adds 400 tokens
  • $5 of credit to start, no card needed
  • Top up $10, $25, $100 or any amount
  • Out of credit means paused, never a surprise bill

What you can build

Wherever text arrives, decisions can follow.

Support

The right queue, first time.

The export button charged us twice and the file never downloaded. Finance needs it before 3pm today.

  • teamtechnical
  • billing_issuetrue
  • deadline15:00

Open a technical ticket, due 15:00; flag billing.

Sales

Spot the signal in every signup.

New workspace: Northline Studio. 14 teammates invited, 3 projects, and an email asking about SSO and annual invoicing.

  • seats14
  • sso_requestedtrue
  • routesales

Send the account to the team-plan queue.

Calls

Catch the moment that matters.

This is the third time I've called. The replacement still hasn't arrived. Please let me speak to a supervisor.

  • repeat_contacts3
  • frustration2.8 / 3
  • supervisortrue

Surface the escalation to the agent, live.

Finance

Every invoice, filed and dated.

Invoice 2291 from Harbour Freight Ltd, dated 3 March 2026, total £1,840.50 inc. VAT, due within 30 days.

  • total1840.50
  • issued2026-03-03
  • terms_days30

Book it, schedule payment for 2 April.

Search

Better context for your agent.

Question: can I return a sale item? Passage: sale items may be returned within 14 days if unworn. Final-sale items are excluded.

  • answers_questiontrue
  • window_days14
  • conditionunworn

Keep the passage; pass the conditions on.

Agents

Look before your agent leaps.

Task: report duplicate files. Proposed action: delete 214 files. Policy: read-only unless a person approves.

  • destructivetrue
  • in_scopefalse
  • nextask a person

Hold the action for approval.

Start free

$5 reads 119 million tokens. Start there.

Create an account, make a key, and ask your first thousand questions before you've thought about a card.