spendline
  • How it works
  • Pilot
  • Integration
  • Guides
Sign inBook a 30-minute call

Data Posture

Spendline, Inc. · Last updated: October 28, 2026

Spendline is a proxy in the path of your AI traffic. That position comes with an obligation to be precise about data handling, so this page is written against the code, not against marketing copy. It states exactly what we retain, what we strip, what we forward, and what we encrypt.

The short version: Spendline stores call metadata and one-way fingerprints, and does not log prompt or completion text. For failed calls it keeps the provider's error message, which can quote part of the request. Your prompts and your model's responses pass through Spendline in memory. There is no setting that turns prompt logging on. What we keep is the accounting: tokens, cost, latency and attribution.

What we do not log

  • Prompt text. The content of your messages is not stored.
  • Model responses. Completions, including streamed responses, are delivered to you and not retained.
  • System prompts. Read in memory only, for token estimation and the fingerprint described below.
  • Attachments and file content. Passed through, never written.

Request content exists inside Spendline only for the lifetime of the request. That is long enough to count tokens, apply your budget and policy rules, and forward it. When the response is delivered, the content is gone. Spendline does not keep a request log of message content, and there is no optional prompt-logging feature. The exception is a failed call: the provider's error message is kept, and some providers quote part of the request in it (see Outcome metadata below).

What we retain: the ledger

Each supported request routed through Spendline writes one append-only ledger row containing operational metadata:

Usage & cost
Token counts (including cached and reasoning breakdowns), computed cost, model, provider, latency, and the provider's own usage counters. Numbers, not content.
Attribution
The labels your application sends: customer, agent, workflow, step and tags. Requests without labels are still recorded, but cannot be assigned to a customer.
Outcome metadata
Status codes, error types, block reasons and server timestamps. When a provider returns an error, the provider's error message is stored with the row. Most describe only the error, but some quote part of the request, such as a parameter value or a fragment of the input.
Two fingerprints
A short one-way fingerprint of the prompt (the first 16 hex characters of a SHA-256 hash of the model and messages), used to spot duplicate calls. It does not contain the prompt text. Because it is not salted, someone who already knows an exact prompt could check whether it matches. A second, keyed fingerprint of the request (an HMAC-SHA-256 under a secret held by Spendline) lets the proxy recognise a retry of the same request. Neither contains the prompt text.

The ledger is append-only: in normal operation rows are not edited, and corrections are recorded as new adjustment rows. Every row is isolated to your tenant. Records are kept while your account is active; you can ask us to delete your data, as described in our Privacy Policy.

What we strip

Before your request is forwarded, Spendline removes its own credentials. The Spendline API key headers your application sends us never reach your model provider. Your provider receives your request authenticated with your provider key, nothing more.

What we forward

Your request content is forwarded to the provider you chose. Spendline may rename or drop a request parameter a model does not accept (for example, the field that sets the maximum output tokens, or temperature on models that reject it); it does not change your messages. The other exception is a cross-provider reroute you have explicitly configured, where the request is translated format-to-format in memory. Forwarding happens over TLS. Your provider key is used solely to authenticate the request with your provider.

What we encrypt

Provider keys
Stored provider keys are encrypted at rest with AES-256-GCM, a unique random IV per key, and a master key held outside the database. Only the last four characters are ever displayed.
Spendline keys & passwords
Spendline API keys and user passwords are stored only as hashes (bcrypt; keys also carry a SHA-256 lookup hash), not encrypted. We cannot recover a raw key after it is issued, which is why it is shown exactly once. Provider keys, above, are encrypted instead, because the proxy has to use them.
In transit
TLS 1.2+ on every hop, from your application to Spendline and from Spendline to your provider. Unencrypted connections are not accepted.
At rest
Our managed database provider (Neon) encrypts the storage that holds ledger and account data.

Why this posture

Spendline's job is financial: attribution, budgets and cost records. All of that is computable from metadata. Storing your content would add risk without adding a capability, so we don't.

Verify it yourself

Every claim on this page corresponds to a specific code path in the proxy. If your security team wants to validate any of it, whether that is the ledger schema, how keys are encrypted, or how headers are stripped before forwarding, contact us at fida@spendline.ai and we will walk them through it directly.

See also our Security and Privacy pages.

spendline
© 2026 Spendline, Inc. · Delaware C-Corp · spendline.ai

Product

  • Pilot
  • Integration
  • FAQ
  • Support

Resources

  • Guides
  • Comparisons
  • Use cases
  • Model pricing
  • Margin calculator
  • Assessment
  • For AI agents

Company

  • What is Spendline?
  • Security
  • Data Posture
  • Privacy
  • Terms
  • Contact
NVIDIA Inception Program badge

Spendline is a member of the NVIDIA Inception program.

© 2026 NVIDIA, the NVIDIA logo, and NVIDIA Inception are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and other countries.