Request logging
Warehouse every request to your database.
Log requests to your database. You'll get an object almost identical to the API, plus any additional metadata included in the header.
![](https://files.readme.io/0c6de002cc02c6e99fc25107b1f686c444c74cc07b888d99067907b51d8ea8b4-logs.png)
We support logging for the below endpoints. For everything else, we're a transparent proxy.
Logging for OpenAI
- /v1/chat/completions
- /v1/batches
- v1/files
- /v1/moderations
- /v1/embeddings
Logging for Anthropic
- /v1/messages
Proxy notes
You'll have full API access. For endpoints where we don't support warehousing, we act as a transparent proxy.
Headers that contain auth or api-key information (e.g authorization, velvet-auth, x-api-key) get redacted in the logs. They’ll show up as [REDACTED] or stripped entirely from the data.
We don’t store your OpenAI key, it’s passed along via the Authorization header to OpenAI. We do create a SHA-256 hash on the Authorization header value and store it in the Metadata column so that you can differentiate keys safely (e.g. you need to differentiate users/apps/cost analysis across rotating keys/etc).
Email [email protected] with any questions.
Example object
Here's an example annotated metadata object (a single JSONB column).
{
"cache": {
"status": "MISS",
"enabled": true
},
"provider": "openai",
"model": "gpt-4o-2024-05-13",
"stream": true,
"environment": "production", // based on api key
"service": "query-builder", // from velvet-metadata-service header
"organization_id": "org_01", // from velvet-metadata-organization_id header
"workspace_id": "work_01", // from metadata header
"user_id": "user_01", // from metadata header
"usage": { // actual usage (if cached, will be zero, otherwise == expected_usage)
"model": "gpt-4o-2024-05-13",
"total_tokens": 9108,
"calculated_by": "js-tiktoken",
"prompt_tokens": 9056,
"completion_tokens": 52
},
"cost": { // actual cost (if cached, will be zero, otherwise == expected_cost)
"input_cost": 0.04528,
"total_cost": 0.04606,
"output_cost": 0.00078,
"input_cost_cents": 4.528,
"total_cost_cents": 4.606,
"output_cost_cents": 0.078
},
"expected_usage": { // expected usage (helper to calculate savings)
"model": "gpt-4o-2024-05-13",
"total_tokens": 9108,
"calculated_by": "js-tiktoken",
"prompt_tokens": 9056,
"completion_tokens": 52
},
"expected_cost": { // expected cost (helper to calculate savings)
"input_cost": 0.04528,
"total_cost": 0.04606,
"output_cost": 0.00078,
"input_cost_cents": 4.528,
"total_cost_cents": 4.606,
"output_cost_cents": 0.078
},
"velvet-auth": "sk_velvet_prod_01", // safe prefix to identify velvet api key
"authorization": "04dbb0765fc4f92786f4961c3ef22cdf2ef7ec54521338a8ebc5f426def7a130" // one-way hash to differentiate openai api keys
}
Add custom metadata via the header that you can query against. See the custom header guide for more detail.
Updated about 1 month ago