Data API · v1
Source-labeled AI-infrastructure data, via REST.
The repository implements Compute Index, capacity, facility/fab reference, token-price, inference-economics, and LCOE route families. Availability is independent by product: persisted products require their live data gates, while uncleared static datasets are quarantined from customer-serving runtimes. Every response declares its source mode; reference responses also expose freshness, evidence, and source-right limitations.
https://www.greencio.com/api/v1Repository route target. A key or successful render is not proof that a product's deployment, data, freshness, or source-right gate has passed. https://api.greencio.com/v1 remains a future host target.
- JSON over HTTPS. ISO-8601 UTC throughout.
- Bearer auth. Cursor pagination.
{ data, meta }envelope. - Additive changes only inside
v1. Breaking changes getv2.
Quickstart
Three steps after a reviewed key has been issued.
1. Request a design-partner key.
Send a reviewed access request. Self-service key issuance is closed for this launch. Approved test or live keys are delivered through an operator-controlled channel and use the same Bearer authentication path.
2. Set the Authorization header.
bashexport GREENCIO_API_KEY="gc_test_..."3. Make your first request.
curlGET /v1/capacity/signalscurl https://www.greencio.com/api/v1/capacity/signals?limit=1 \ -H "Authorization: Bearer $GREENCIO_API_KEY"In an explicit local demo/test profile, Capacity Signals returns only source-linked seed rows in a quarantined reference envelope. The example below is illustrative, not live data.
json200 OK{ "data": [ { "id": "sig_01HZF8N7C3K9YR3P6Q5R2VTYBW", "type": "permit", "title": "Illustrative source-linked reference signal", "impact": "high", "observed_at": "2026-05-12T14:08:00Z", "source_url": "https://publisher.example/reference", "confidence_status": "legacy_seed_score_unverified", "linked_markets": [] } ], "meta": { "generated_at": "2026-05-16T00:00:00Z", "request_id": "req_01HZH5J7K4M9Q8...", "next_cursor": "eyJpZCI6InNpZ18wMUhaRjhONy...", "source_mode": "seed_reference", "status": "demo_reference", "freshness": "breached", "evidence_status": "source_linked_rows_only", "source_rights": { "counsel_status": "pending_review", "publication_scope": "demo_only" } } }
That's it. Same shape across every endpoint — list responses always come with a next_cursor, single resources omit it. Continue with Authentication to understand key lifecycle, or jump to Reference for the endpoint list.
Authentication
Every request must include an Authorization header with a Bearer token. Keys come in two flavors:
| Prefix | Environment | Can bill | Allocation |
|---|---|---|---|
gc_test_ | Test sandbox | No | Self-serve from /docs/api/keys |
gc_live_ | Live production | Yes | Hand-allocated — email hello@greencio.com |
curl https://www.greencio.com/api/v1/index/compute \
-H "Authorization: Bearer $GREENCIO_API_KEY"Key lifecycle
- Issued: shown once at creation time. Store it immediately.
- Active: validates on every request.
last_used_atupdates each call. - Revoked: returns
401 unauthenticated. Rotation is hand-driven today; a self-serve rotation UI lands in v1.1.
Conventions
Every endpoint in the API follows the same conventions. Once you know them you know all of v1.
Response envelope
Success responses always have data and meta. Error responses always have error. Errors never appear inside data.
{
"data": [ /* items */ ],
"meta": {
"generated_at": "2026-05-16T00:00:00Z",
"request_id": "req_01HZH...",
"next_cursor": "eyJpZCI6...",
"source_mode": "persisted"
}
}{
"error": {
"code": "invalid_filter",
"message": "since must be ISO-8601 UTC",
"field": "since",
"request_id": "req_01HZH..."
}
}The request_id appears in both the body and the X-Request-Id response header. Include it in any support email and we can trace the exact call.
Pagination
Collections are cursor-paginated. There is no offset pagination and there will never be — it does not survive data drift.
# First page
curl "https://www.greencio.com/api/v1/capacity/signals?limit=50" \
-H "Authorization: Bearer $GREENCIO_API_KEY"
# Next page — pass meta.next_cursor from the previous response
curl "https://www.greencio.com/api/v1/capacity/signals?limit=50&cursor=eyJpZCI6..." \
-H "Authorization: Bearer $GREENCIO_API_KEY"limitdefaults to 50, max 500.cursoris opaque base64. Don't parse it; round-trip what we sent.meta.next_cursorisnullwhen the result set is exhausted.
Time format
Every timestamp is an ISO-8601 string in UTC: 2026-05-16T00:00:00Z. No Unix epoch, no locale variation. Filters that accept a time accept the same format.
Resource IDs
IDs are opaque, stable, and prefixed by resource type. Customers store them; the prefix prevents the “is this a signal or a facility ID?” support load.
| Prefix | Resource | Example |
|---|---|---|
| int_ | Intelligence item | int_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| sig_ | Capacity signal | sig_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| fac_ | Data-center facility | fac_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| fab_ | Semiconductor fab | fab_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| set_ | Index settlement | set_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| mkt_ | Prediction market | mkt_01HZF8N7C3K9YR3P6Q5R2VTYBW |
| req_ | Request (response only) | req_01HZH5J7K4M9Q8... |
Errors
Every error response uses the same shape and one of a fixed taxonomy of codes. Match on code, not on message — messages may change for clarity, codes will not.
| HTTP | Code | Meaning |
|---|---|---|
| 400 | invalid_request | Malformed body or missing required field. |
| 400 | invalid_filter | Filter value rejected; the field names the offender. |
| 401 | unauthenticated | Missing, malformed, expired, or revoked key. |
| 403 | unauthorized | Key valid, but your tier does not include this resource. |
| 404 | not_found | Resource ID not recognized. |
| 409 | idempotency_conflict | Same Idempotency-Key with a different body. |
| 422 | validation_failed | Body parsed but failed semantic validation. |
| 429 | rate_limited | Burst or monthly quota exceeded — check the Retry-After header. |
| 500 | internal_error | Bug on our side. Include request_id in any report. |
| 503 | service_unavailable | Backing data missing or upstream dependency down. Retry with backoff. |
Rate limits
Two independent limits: a per-second burst and a monthly quota. Both are surfaced on every response, including success responses, so you don't need to hit 429to learn what's left.
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 2026-05-16T00:00:01Z
X-RateLimit-Quota-Limit: 50000
X-RateLimit-Quota-Remaining: 47233
X-RateLimit-Quota-Reset: 2026-06-01T00:00:00ZWhen you exceed either limit you get a 429 with a Retry-After header in seconds.
| Tier | Burst / sec | Quota / month |
|---|---|---|
| Insights | 30 | 50,000 |
| Pro | 100 | 250,000 |
| Carbon Trail | 20 | 100,000 runs |
| Enterprise | Negotiated | Negotiated |
Test keys run at Pro-level limits so you can iterate without throttling, but their monthly counter is separate from any live key on the same account.
Idempotency
Every POST endpoint accepts an Idempotency-Key header. It is required for endpoints that compute billing-relevant results — currently /lcoe and /inference/unit-economics. Optional elsewhere. Without it, a network retry would create a duplicate.
curl -X POST https://www.greencio.com/api/v1/lcoe \
-H "Authorization: Bearer $GREENCIO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"capex_usd": 1200000000,
"annual_generation_mwh": 2400000,
"project_lifetime_years": 20,
"discount_rate": 0.08,
"annual_opex_usd": 40000000
}'- Send the same key with the same body → original response is replayed. Safe to retry.
- Send the same key with a different body →
409 idempotency_conflict. Pick a new key. - Keys are valid for 24 hours. After that, the slot is reusable.
- Use UUID v4, a request hash, or any 8–200 char string. We don't parse it; we match it.
Reference
Five products. Endpoint tier indicates which subscription plan grants access — see Pricing.
Capacity Signals
The seed-signal routes are preview fixtures: they return only rows with a canonical external source URL, label legacy confidence as unverified, and never synthesize linked-market probabilities. They are unavailable to live keys and customer-serving runtimes. The separate intelligence routes require fresh persisted GCS data and approved news-publication rights. The facility CSV is also quarantined: it has prose source notes but no canonical row URLs, approved rights record, or source observation date; filesystem mtime is not freshness evidence.
| Method | Path | Description | Tier |
|---|---|---|---|
| GET | /v1/capacity/signals | List classified signals (filter: type, impact, since, operator, region) | Insights |
| GET | /v1/capacity/signals/{id} | Single signal with full source chain and linked markets | Insights |
| GET | /v1/capacity/intelligence | Underlying news items (titles + GreenCIO summaries; no third-party article bodies) | Insights |
| GET | /v1/capacity/intelligence/{id} | Single intelligence item | Insights |
| GET | /v1/facilities | Quarantined facility CSV fixture (demo/test only) | Insights |
| GET | /v1/facilities/{id} | Single unverified facility fixture row | Insights |
curl "https://www.greencio.com/api/v1/capacity/signals?impact=high&operator=meta&limit=2" \
-H "Authorization: Bearer $GREENCIO_API_KEY"GreenCIO Compute Index
Forward and spot compute-price benchmarks across SKU × region × tenor, with uncertainty bands, regional/SKU basis spreads, and a published methodology, administered independently of any exchange or clearing house. Pro-tier.
Live keys receive methodology-cleared settlements by default. Provisional rows are reserved for review/sandbox workflows and require include_provisional=true with a non-live key.
| Method | Path | Description | Tier |
|---|---|---|---|
| GET | /v1/index/compute | Current settlements with bands and 24h move | Pro |
| GET | /v1/index/compute/{index_name} | Single settlement detail | Pro |
| GET | /v1/index/compute/history | Historical settlements, cursor-paginated | Pro |
| GET | /v1/index/compute/basis | Basis spreads versus the headline GCI settlement | Pro |
| GET | /v1/index/compute/methodology | Methodology version metadata | Pro |
curl https://www.greencio.com/api/v1/index/compute \
-H "Authorization: Bearer $GREENCIO_API_KEY"{
"data": [
{
"id": "set_01KRVW...",
"index_name": "GCI-H100-USE-SPOT",
"sku": "H100",
"region": "US_EAST",
"tenor": "SPOT",
"as_of": "2026-05-17T12:00:00.000Z",
"currency": "USD",
"value": 5,
"band_low": 4.8,
"band_high": 5.2,
"n_inputs": 5,
"n_venues": 5,
"provisional": false,
"source_mode": "persisted",
"audit": {
"included_input_ids": [
"aws-price-list-api:aws:aws-ec2:p5-48xlarge:h100:us-east-1:on-demand:gpu-hour"
],
"source_weight_shares": {
"aws-price-list-api": 0.2,
"azure-retail-prices-api": 0.2,
"google-cloud-billing-catalog": 0.2,
"coreweave-gpu-pricing": 0.2,
"lambda-gpu-cloud-pricing": 0.2
}
}
}
],
"meta": {
"generated_at": "2026-05-17T12:05:00.000Z",
"request_id": "req_01KRVW...",
"next_cursor": null,
"source_mode": "persisted",
"methodology_version": "gci-v0.1.1",
"audit_hash": "b7f3...",
"provisional_policy": "excluded_by_default",
"provisional_filtered_count": 0
}
}Inference Economics
The deterministic unit-economics and LCOE calculators use submitted assumptions and returnsubmitted_model; they do not silently consume provider token prices. The token-price routes expose a separately sourced snapshot with observation date, freshness, methodology, and approved public-pricing rights metadata. The history path currently returns one labeled snapshot, not a time series.
| Method | Path | Description | Tier |
|---|---|---|---|
| GET | /v1/inference/token-prices | Input/output token prices per provider, USD/1M tokens | Pro |
| GET | /v1/inference/token-prices/history | Single token-price snapshot; history_available=false | Pro |
| POST | /v1/inference/unit-economics | Composite calculation. Idempotency-Key required. | Pro |
| POST | /v1/lcoe | Levelized cost of energy. Idempotency-Key required. | Insights |
curl -X POST https://www.greencio.com/api/v1/inference/unit-economics \
-H "Authorization: Bearer $GREENCIO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: ue-2026-05-16-001" \
-d '{
"facility_capacity_mw": 120,
"gpu_count": 8192,
"gpu_type": "H100",
"capex_usd": 2500000000,
"power_cost_usd_per_mwh": 68,
"utilization_rate": 0.72
}'Fabs
The current fab and chokepoint fixture has no row-level citations or approved redistribution policy. It is retained for explicit local demo/test UI work, labeled unverified and stale, and returns unavailable for live keys or customer-serving runtimes. Do not use it as node-capacity evidence.
| Method | Path | Description | Tier |
|---|---|---|---|
| GET | /v1/fabs | Fab master (filter: region, node, operator) | Pro |
| GET | /v1/fabs/{id} | Single fab | Pro |
| GET | /v1/fabs/chokepoints | Supply-chain chokepoint scores by node | Pro |
Power Forecast & Carbon Trail
Two products are spec'd but deliberately not yet returning numbers. Power Forecast (v1.1) needs prediction-market integration to back its probability bands; shipping numbers before that would be theatre. Carbon Trail (v1.2) is targeted at corporate sustainability teams running CSRD/CDP filings — it requires a Big Four assurance partnership we are mid-conversation on.
Both namespaces are specified in the OpenAPI contract for later releases, but they are not published as live customer endpoints today. Email hello@greencio.com if you want design-partner access.
Pricing
Pricing below is a hypothesis we are validating with the first design partners. Don't expect it to be on a buy-now button quite yet — talk to us if you want to lock in.
Sell-side research, climate-tech VCs, IPP strategy.
Includes
- Capacity Signals (gated; seed demo quarantined)
- Facilities (quarantined fixture)
- LCOE calculator
50,000 req / month · 30 / sec burst
Trading desks, infra funds, hyperscaler corporate strategy.
Includes
- Everything in Insights
- GreenCIO Compute Index (gated)
- Inference Economics
- Fabs (quarantined fixture)
250,000 req / month · 100 / sec burst
Corporate sustainability teams running CSRD/CDP filings.
Includes
- Carbon Trail endpoints (v1.2)
- Audit-grade methodology export
100,000 attribution runs / month
Enterprise plans (custom SLAs, dedicated support, EU data residency on roadmap) are negotiated. Email hello@greencio.com.
Status & changelog
- OpenAPI spec:
docs/api/openapi.yamlin the repo. The contract. - Have a regression or a question? Email hello@greencio.com with the failing request's
request_id.
Changelog
- v1.0.0 contract — route families implemented for Capacity Signals, GreenCIO Compute Index, Inference Economics, Fabs, and LCOE. Product availability remains subject to the source-mode, deployment, freshness, and rights gates described above. Power Forecast and Carbon Trail namespaces are reserved for later versions.