Skip to content
Margin
ProductThe Meterevery call, meteredThe Estatethe org chart of your agentsThe Money Mapwhere the spend goesThe Parity Gateprove it before it shipsThe Governorthe control loopDocsPricingCompany
Sign inGet set up →
ProductThe MeterThe EstateThe Money MapThe Parity GateThe GovernorDocsPricingCompanyLive demoSign in

What we can and cannot see

Margin measures what your AI spends and whether the work succeeded. It does that without ever receiving what your models were asked or what they said back. Below is the whole list of what arrives, field by field.

Last updated 7 September 2026

The short version

  • Your production prompts and completions never reach us. Not redacted, not encrypted, not retained briefly. There is no field for them anywhere in the SDK, the API or the database. A measurement run you start from the console is the one exception, below.
  • Margin is a meter, not a proxy. Your agents call OpenAI, Anthropic and the rest directly. We are not in that path. The SDK posts a short record of what a call cost, after it happened.
  • Turning us off does not break anything. Remove the SDK and your agents keep running unchanged, because nothing routes through us.
  • Eleven fields are free text you choose. They are the only way content could reach us, and only if you put it there. Named below.

Everything we store about a call

One row per model call. Thirty-eight columns, listed here in full rather than summarised, because a summary is where the interesting field hides.

GroupWhat it is forFields
Your labelsStrings you choose, so the numbers can be grouped the way your org is.sourceevent_idworkflow_idsession_idprompt_idoperationenvironmentteamtask_keytask_classspan_idparent_span_id
Which model ranEnough to price the call and compare routes.providermodelbilling_tierinference_geospeedsubstrateharness
How much it usedCounts. Never the tokens themselves.input_tokensoutput_tokenscache_read_tokenscache_creation_tokenscache_creation_1h_tokensreasoning_tokens
How it wentWhether the work succeeded, and how the agent was shaped.statusfinish_reasonoutcome_passedfailing_criteriais_retryis_simulatedorchestration_patternbranch_widthstopping_rule
Cost and timeThe two numbers the whole product divides by.idtscost_usdlatency_ms

The outcome record is shorter: whether it passed, a quality score and how it was graded, an optional link back to your own system, and a value if you supplied one.

What is absent, and why that is structural

No prompt. No completion. No message content. No user identifiers, email addresses or IP addresses. Not because we delete them, because nothing collects them: the SDK builds its payload from the usage block your provider returns, which carries counts rather than text.

This is worth stating plainly since the category norm is the opposite. Tools that grade output quality have to read the output. Margin reads the meter, so the honest description of our access is that we could not show you your own prompts if you asked.

The one exception is a measurement run you start from the console. It clones your repository and runs your own eval harness in a throwaway container on our server, on a model key made for that run alone, capped in dollars and revoked when it ends. While it runs, your evals’ prompts and responses go from our server to OpenRouter. We keep only the run’s cost and outcome records, the same fields the meter records. The checkout is deleted when the run ends, but a daily server backup taken during a run can hold a copy for up to 7 days.

The eleven fields you control

These carry text you write, so they are the one route by which your content could reach us:

source · event_id · workflow_id · session_id · prompt_id · operation · environment · team · task_key · task_class · failing_criteria

They exist to be labels, and short ones work best in the console. Name a workflow invoice-extraction rather than pasting the invoice.

Where it lives

Postgres hosted by Neon in AWS us-east-1, behind an application hosted by Vercel. Encrypted in transit and at rest by both. Those two are our only subprocessors, and the Data Processing Addendum names them, commits to thirty days notice before any change, and gives you the right to object.

A customer who prefers it gets a separate deployment with its own database, so isolation is physical rather than a query filter.

What we will not do

  • Train or fine-tune any model on your data.
  • Pool your numbers into a benchmark shown to another customer.
  • Sell or share your data with anyone outside the subprocessors above.
  • Route your model traffic, which is what keeps our advice neutral.

These are commitments in the DPA, not preferences. Deletion is thirty days from a written request, and breach notice is without undue delay and inside seventy-two hours.

Where we are small

No SOC 2 report. We are early enough that buying one would prove a process we have not run for long enough to be worth certifying, and we would rather say that than imply otherwise. What we offer instead is documentation, a filled security questionnaire, and an on-site review on reasonable notice.

If your procurement needs SOC 2 to sign, we are not the right vendor yet. That is a real answer and we would rather give it early.

Questions, or a questionnaire to fill: subh@trymargin.io.

TermsPrivacyDPA
Margin

The economic control layer for your AI workforce. Price an outcome and Margin reports what it returns; a cheaper route ships only when quality holds. Neutral across providers, and every number on this site traces back to a run we can show you.

Product

  • The five parts
  • Console
  • Docs
  • Pricing
  • Compare

Company

  • About
  • Build log
  • Security
  • Contact

Resources

  • How it works
  • Day 0 to 60
  • Essays
  • margin-cost on GitHub
  • margin-meter on PyPI
  • margin-meter on npm

Legal

  • Terms
  • Privacy
  • Cookies
  • DPA
© 2026 MarginBuilt in Chicago41.88° N, 87.63° W