# LimitsDB dataset schema

One JSON object per line in /data/snapshot.jsonl.

| field | type | meaning |
| --- | --- | --- |
| id | string | Stable fact identifier |
| provider | object | slug and name of the company or service |
| product | object | slug and name of the product family |
| plan | object | slug and name of the pricing/entitlement scope |
| key | string | Canonical fact key |
| value | number, string or boolean | Normalised comparable value |
| datatype | enum | integer, decimal, boolean, string, enum, money |
| unit | string or null | Explicit unit for the value |
| currency | string or null | ISO currency code for money datatypes |
| raw_value | string or null | The vendor's own wording |
| status | enum | verified, stale, conflicting, removed |
| observed_at | timestamp | When LimitsDB retrieved the evidence |
| effective_from | timestamp or null | Start of known validity window |
| effective_to | timestamp or null | End of known validity window |
| last_verified_at | timestamp | Last successful re-check |
| source | object | url, title, source_type, retrieved_at |

Facts with status "inferred" are stored but never published.

## Canonical fact keys (40)

| key | datatype | unit | description |
| --- | --- | --- | --- |
| ai.model.batch_api | boolean |  | Provider offers a batch inference API |
| ai.model.context_window_tokens | integer | tokens | Maximum input context length |
| ai.model.max_output_tokens | integer | tokens | Maximum tokens generated in a single response |
| ai.model.vision_input | boolean |  | Model accepts image input |
| api.public_api.available | boolean |  | Provider exposes a documented public API |
| api.rate_limit.requests_per_day | integer | requests/day | Maximum API requests per day |
| api.rate_limit.requests_per_hour | integer | requests/hour | Maximum API requests per hour |
| api.rate_limit.requests_per_minute | integer | requests/minute | Maximum API requests per minute |
| api.rate_limit.tokens_per_minute | integer | tokens/minute | Maximum tokens processed per minute |
| api.webhooks.available | boolean |  | Provider exposes outbound webhooks |
| auth.mfa.enforced | boolean |  | Organisation-wide MFA enforcement is available |
| auth.scim.provisioning | boolean |  | Directory-based user provisioning is available |
| auth.sso.saml | boolean |  | SAML single sign-on is available on the plan |
| compute.build.concurrency | integer | concurrent builds | Number of builds or jobs that can run in parallel |
| compute.build.max_duration_seconds | integer | seconds | Maximum duration of a single build or job |
| compute.cpu.cores | decimal | vCPU | Virtual CPU cores per instance |
| compute.function.concurrency | integer | concurrent executions | Maximum concurrent executions |
| compute.function.max_duration_seconds | integer | seconds | Maximum wall-clock execution time for a single function invocation |
| compute.function.max_memory_mb | integer | megabytes | Maximum memory available to a function instance |
| compute.function.max_payload_bytes | integer | bytes | Maximum accepted request body size |
| compute.function.max_response_bytes | integer | bytes | Maximum response body size |
| network.bandwidth_included_gb | decimal | gigabytes | Bandwidth included per billing period |
| network.request_timeout_seconds | integer | seconds | Edge or gateway request timeout |
| platform.audit_log.retention_days | integer | days | How long audit log entries are retained |
| platform.data_residency | boolean |  | Customer-selectable data residency is available |
| platform.regions.count | integer | regions | Number of deployable regions or locations |
| platform.seats.included | integer | seats | Seats included in the plan |
| platform.support.sla | boolean |  | Contractual support SLA is offered |
| pricing.included.minutes_per_month | integer | minutes/month | Usage minutes included per month |
| pricing.overage.bandwidth_per_gb | money |  | Price per additional gigabyte of bandwidth |
| pricing.plan.annual_price | money |  | Recurring annual plan price |
| pricing.plan.monthly_price | money |  | Recurring monthly plan price |
| pricing.plan.per_seat_monthly_price | money |  | Monthly price charged per seat |
| pricing.unit.input_tokens_per_million | money |  | Price per million input tokens |
| pricing.unit.output_tokens_per_million | money |  | Price per million output tokens |
| pricing.unit.requests_per_million | money |  | Price per million requests |
| storage.included_gb | decimal | gigabytes | Storage included in the plan |
| storage.kv.max_value_bytes | integer | bytes | Maximum size of a single key-value entry |
| storage.object.max_size_bytes | integer | bytes | Maximum size of a single stored object or file |
| storage.retention_days | integer | days | How long data is retained by default |
