# Bulk download Source: https://docs.silicondata.com/api-reference/bulk-download ## POST /api/data-hub/gpu/archive/list Get GPU batch download list. A list of `id` from response must be used in the `/download` endpoint to find the download URL. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. All fields are optional; `filter` is a list of single-key objects. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `filter/tier` | integer | No | The data tier to be downloaded; defaults to 3 | | | `filter/interval` | string | No | Interval of the data | \[day, month, quarter, year] | | `filter/type` | string | No | Data type | \[rental, retail] | | `filter/period` | string | No | Data period, e.g. "2025-03-31", "2025-03", "2025" | | | `paginate/num_per_page` | integer | No | How many records to return per page; default 50 | \[ 1 .. 100 ] | | `paginate/page_num` | integer | No | The page index number; default 1 | >= 1 | | `order_by/period` | string | No | Sort order of the file list | \[asc, desc] | ### Request Example ```json theme={null} { "filter": [ {"tier": 3}, {"interval": "day"}, {"type": "rental"}, {"period": "2025-06-02"} ], "paginate": {"num_per_page": 10, "page_num": 1}, "order_by": [ {"period": "desc"} ] } ``` ### Responses Response consists of meta and data, where: * meta is the metadata regarding the request. `code` in `meta` indicates the error code of the request, with 0 indicating no error. * data contains the total number of results and a list of results, each containing the `id` that can be used to download the data. ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/archive/list", "message": "OK", "timestamp": 1748908800 }, "data": { "total": 1, "results": [ { "tier": 3, "interval": "day", "period": "2025-06-02", "type": "rental", "csv_s3_path": "s3://bucket/path/to/file.csv", "id": "1234567890123456789", "sequence_id": 1 } ] } } ``` *** ## POST /api/data-hub/gpu/archive/download Get GPU data download URL using `id`, obtained from the `/list` endpoint. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `id` | integer | Yes | ID used for find download URL | | ### Request Example ```json theme={null} { "id": 1234567890123456789 } ``` ### Responses ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/archive/download", "message": "OK", "timestamp": 1748908800 }, "data": { "csv_download_url": "https://sd-data-archive.s3.amazonaws.com/gpu/2025-03-31.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Signature=8f3c1b9a2d..." } } ``` ## Batch download GPU data using Python This example shows how to batch download GPU data using the two endpoints above. We first list the available data using the `/list` endpoint, and then download each file using the `/download` endpoint. The required API token can be obtained through the user portal. ```python theme={null} import requests token = "ENTER YOUR API TOKEN HERE" headers = {'Authorization': f'Bearer {token}'} base_url = "https://api.silicondata.com/api/data-hub/gpu/archive" body = { "filter": [ {"tier": 3}, {"interval": "day"}, {"type": "rental"}, {"period": "2025-06-02"} ], "paginate": {"num_per_page": 10, "page_num": 1}, "order_by": [ {"period": "desc"} ] } listing_res = requests.post(f"{base_url}/list", json=body, headers=headers).json() for res in listing_res['data']['results']: download_res = requests.post(f"{base_url}/download", json={"id": res['id']}, headers=headers).json() csv_download_url = download_res['data']['csv_download_url'] with open(f"{res['period']}.csv", 'wb') as file: file.write(requests.get(csv_download_url).content) ``` # SiliconCarbon API Source: https://docs.silicondata.com/api-reference/carbon API docs for accessing GPU carbon intensity and carbon emission data from Silicon Data. > 📌 **Note:** All SiliconCarbon endpoints require an active subscription. Successful responses are wrapped in a `{ "meta": {...}, "data": {...} }` envelope; the documented response body for each endpoint is returned under the `data` key. ## GET /api/data-hub/carbon/gpu-carbon-intensity Calculate the carbon intensity of a GPU for a given location, using query parameters. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `gpu_slug` | string or null | No | GPU slug. Either `gpu_slug` or `gpu_name` must be provided. | | | `gpu_name` | string or null | No | GPU full name. If `gpu_slug` is filled in, full name will be overridden; if `gpu_slug` is not provided, full name is required. | | | `hours_used` | number | Yes | GPU used in hours, should be greater than 0. | > 0 | | `zipcode` | string | Yes | Zip code of data center. | | | `country_code` | string | Yes | Country code of data center, represented in ISO 3166-1 alpha-2, e.g., `US` for United States. | | ### Request Example ``` GET /api/data-hub/carbon/gpu-carbon-intensity?gpu_slug=nvidia-h100&hours_used=24&zipcode=94103&country_code=US ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "OK", "timestamp": 1744201871 }, "data": { "carbonIntensity": 643.20, "gpu_slug": "nvidia-h100", "gpu_name": null, "gpu_tdp": 700, "zipcode": "94103", "country_code": "US", "carbon_emission_rate": 38.2857, "carbon_data_updated_time": "2025-04-01T00:00:00" } } ``` * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "Parameter value error: hours_used:Input should be greater than 0", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` * **500**: Business Error (e.g., region not found, GPU not found, or missing GPU identifier) ```json theme={null} { "meta": { "code": 34003, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "Unfortunately, we currently do not have data available for the region you selected.\nFor more information, please contact us at support@silicondata.com.", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## POST /api/data-hub/carbon/gpu-carbon-intensity Calculate the carbon intensity of a GPU for a given location, using a JSON request body. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `gpu_slug` | string or null | No | GPU slug. Either `gpu_slug` or `gpu_name` must be provided. | | | `gpu_name` | string or null | No | GPU full name. If `gpu_slug` is filled in, full name will be overridden; if `gpu_slug` is not provided, full name is required. | | | `hours_used` | number | Yes | GPU used in hours, should be greater than 0. | > 0 | | `zipcode` | string | Yes | Zip code of data center. | | | `country_code` | string | Yes | Country code of data center, represented in ISO 3166-1 alpha-2, e.g., `US` for United States. | | ### Request Example ```json theme={null} { "gpu_slug": "nvidia-h100", "gpu_name": null, "hours_used": 24, "zipcode": "94103", "country_code": "US" } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "OK", "timestamp": 1744201871 }, "data": { "carbonIntensity": 643.20, "gpu_slug": "nvidia-h100", "gpu_name": null, "gpu_tdp": 700, "zipcode": "94103", "country_code": "US", "carbon_emission_rate": 38.2857, "carbon_data_updated_time": "2025-04-01T00:00:00" } } ``` * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "Parameter value error: hours_used:Input should be greater than 0", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` * **500**: Business Error (e.g., region not found, GPU not found, or missing GPU identifier) ```json theme={null} { "meta": { "code": 34003, "url": "/api/data-hub/carbon/gpu-carbon-intensity", "message": "Unfortunately, we currently do not have data available for the region you selected.\nFor more information, please contact us at support@silicondata.com.", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## GET /api/data-hub/carbon/zone-emission-rate Query the carbon emission rate of a zone by zipcode and country code. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `zipcode` | string | Yes | Zip code. | | | `country_code` | string | Yes | Country code, represented in ISO 3166-1 alpha-2, e.g., `US` for United States. | | ### Request Example ``` GET /api/data-hub/carbon/zone-emission-rate?zipcode=94103&country_code=US ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/zone-emission-rate", "message": "OK", "timestamp": 1744201871 }, "data": { "carbon_emission_rate": { "zipcode": "94103", "country_code": "US", "country_name": "United States", "carbon_region_code": "US-CAL-CISO", "carbon_emission_rate": 38.2857, "carbon_emission_rate_type": "00", "emission_factor_type": "LC", "extra_data": null, "updated_time": "2025-04-01T00:00:00" } } } ``` > When no emission rate is found for the given zone, `carbon_emission_rate` is returned as `null`. * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/zone-emission-rate", "message": "Parameter value error: zipcode:Field required", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## GET /api/data-hub/carbon/gpu-carbon-provider-intensity Calculate the carbon intensity of a GPU hosted by a specific cloud provider region. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `gpu_slug` | string or null | No | GPU slug. Either `gpu_slug` or `gpu_name` must be provided. | | | `gpu_name` | string or null | No | GPU full name. If `gpu_slug` is filled in, full name will be overridden; if `gpu_slug` is not provided, full name is required. | | | `hours_used` | number | Yes | GPU used in hours, should be greater than 0. | > 0 | | `provider` | string | Yes | Name of the provider. | | | `provider_code` | string | Yes | Unique code of the provider region. | | ### Request Example ``` GET /api/data-hub/carbon/gpu-carbon-provider-intensity?gpu_slug=nvidia-h100&hours_used=24&provider=Amazon%20Web%20Services&provider_code=us-east-1 ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/gpu-carbon-provider-intensity", "message": "OK", "timestamp": 1744201871 }, "data": { "carbonIntensity": 643.20, "gpu_slug": "nvidia-h100", "gpu_name": null, "gpu_tdp": 700, "hour": 24, "provider": "Amazon Web Services", "provider_code": "us-east-1", "carbon_emission_rate": 38.2857, "carbon_data_updated_time": "2025-04-01T00:00:00" } } ``` * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/gpu-carbon-provider-intensity", "message": "Parameter value error: provider_code:Field required", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` * **500**: Business Error (e.g., provider code not found, GPU not found, or missing GPU identifier) ```json theme={null} { "meta": { "code": -1, "url": "/api/data-hub/carbon/gpu-carbon-provider-intensity", "message": "No matching data found for provider_code us-east-1 in sd_data_center.", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## POST /api/data-hub/carbon/batch/gpu-carbon-intensity Batch query the carbon intensity of multiple GPUs in a single request. A maximum of 50 items may be submitted per request. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `data` | Array | No | List of the GPU carbon intensity querying arguments. | Max 50 items | #### data (Array) | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `gpu_slug` | string or null | No | GPU slug. If `gpu_name` is None, this field should be filled in. | | | `gpu_name` | string or null | No | GPU name. If `gpu_slug` is filled in, this field will be overridden; if `gpu_slug` is None, this field is required. | | | `hours_used` | number | Yes | GPU used in hours, should be greater than 0. | > 0 | | `zipcode` | string | Yes | Zipcode of data center. | | | `country_code` | string | Yes | Country code of data center, represented in ISO 3166-1 alpha-2, e.g., `US` for United States. | | ### Request Example ```json theme={null} { "data": [ { "gpu_slug": "nvidia-h100", "gpu_name": null, "hours_used": 24, "zipcode": "94103", "country_code": "US" }, { "gpu_slug": "nvidia-a100", "gpu_name": null, "hours_used": 12, "zipcode": "10001", "country_code": "US" } ] } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/batch/gpu-carbon-intensity", "message": "OK", "timestamp": 1744201871 }, "data": { "data_cnt": 2, "data": [ { "gpu_slug": "nvidia-h100", "gpu_name": null, "gpu_tdp": 700, "hours_used": 24, "zipcode": "94103", "country_code": "US", "carbon_emission_rate": 38.2857, "carbon_data_updated_time": "2025-04-01T00:00:00", "carbon_intensity": 643.20 }, { "gpu_slug": "nvidia-a100", "gpu_name": null, "gpu_tdp": 0, "hours_used": 12, "zipcode": "10001", "country_code": "US", "carbon_emission_rate": null, "carbon_data_updated_time": null, "carbon_intensity": null } ] } } ``` > When the GPU or the carbon emission data for the given zone is not found, `carbon_intensity`, `carbon_emission_rate`, and `carbon_data_updated_time` are returned as `null` for that item. * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/batch/gpu-carbon-intensity", "message": "Parameter value error: hours_used:Input should be greater than 0", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` * **500**: Business Error (e.g., batch exceeds 50 items, or an item is missing both `gpu_slug` and `gpu_name`) ```json theme={null} { "meta": { "code": -1, "url": "/api/data-hub/carbon/batch/gpu-carbon-intensity", "message": "Exceed the upper limit of the number of querying per request, should less or equal 50 per request.", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## GET /api/data-hub/carbon/country Query country detail information. Supports fuzzy (prefix) search by country name. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `country_name` | string | No | Country name; supports prefix search. If omitted, all countries are returned. | | ### Request Example ``` GET /api/data-hub/carbon/country?country_name=United ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/country", "message": "OK", "timestamp": 1744201871 }, "data": { "data_cnt": 1, "data": [ { "country_name": "United States", "area": 9833517.0, "population": 331002651, "continent": "NA", "iso_3166_alpha_2": "US", "iso_3166_alpha_3": "USA", "iso_3166_numeric": "840", "created_time": "2024-01-01T00:00:00", "updated_time": "2025-04-01T00:00:00", "sync_time": "2025-04-01T00:00:00", "fips": "US", "capital": "Washington, D.C.", "default_zipcode": "20001" } ] } } ``` *** ## GET /api/data-hub/carbon/default-zipcode Query the default zipcode of a country by country code. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `country_code` | string | Yes | Country code, represented in ISO 3166-1 alpha-2, e.g., `US` for United States. | | ### Request Example ``` GET /api/data-hub/carbon/default-zipcode?country_code=US ``` ### Responses * **200**: Successful Response The route returns the default zipcode as a string under the `data` key. ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/default-zipcode", "message": "OK", "timestamp": 1744201871 }, "data": "00501" } ``` > If the country has no zipcodes, `data` is returned as an empty string. * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/data-hub/carbon/default-zipcode", "message": "Parameter value error: country_code:Field required", "timestamp": 1744201871, "args": [], "kwargs": {} }, "data": {} } ``` *** ## GET /api/data-hub/carbon/providers/ Get the list of all data center providers. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters This endpoint takes no query parameters. ### Request Example ``` GET /api/data-hub/carbon/providers/ ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/providers/", "message": "OK", "timestamp": 1744201871 }, "data": { "providers": [ "Amazon Web Services", "Google Cloud Platform", "Azure" ] } } ``` *** ## GET /api/data-hub/carbon/providers//codes Get the region codes for a given provider by provider name. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Path Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `provider_name` | string | Yes | Name of the provider. | | ### Request Example ``` GET /api/data-hub/carbon/providers/Amazon%20Web%20Services/codes ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/providers/Amazon Web Services/codes", "message": "OK", "timestamp": 1744201871 }, "data": { "provider": "Amazon Web Services", "codes": [ "us-east-1", "us-west-2", "eu-west-1" ] } } ``` > If the provider is not found, both `provider` and `codes` are returned as `null`. *** ## GET /api/data-hub/carbon/providers\_selection//codes Get the region codes for a given provider, restricted to a fixed set of supported providers. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Path Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `provider_name` | string | Yes | Name of the provider. Must be one of the supported provider names. | `Amazon Web Services`, `Google Cloud Platform`, `Azure` | ### Request Example ``` GET /api/data-hub/carbon/providers_selection/Amazon%20Web%20Services/codes ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/providers_selection/Amazon Web Services/codes", "message": "OK", "timestamp": 1744201871 }, "data": { "provider": "Amazon Web Services", "codes": [ "us-east-1", "us-west-2", "eu-west-1" ] } } ``` > If the provider is not found or has no codes, `data` is returned as `null`. *** ## GET /api/data-hub/carbon/providers\_with\_codes/ Get the list of all providers, each with its associated region codes. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters This endpoint takes no query parameters. ### Request Example ``` GET /api/data-hub/carbon/providers_with_codes/ ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/carbon/providers_with_codes/", "message": "OK", "timestamp": 1744201871 }, "data": { "data_cnt": 2, "data": [ { "provider_name": "Amazon Web Services", "codes": [ "us-east-1", "us-west-2" ] }, { "provider_name": "Google Cloud Platform", "codes": [ "us-central1", "europe-west1" ] } ] } } ``` # Forward curve Source: https://docs.silicondata.com/api-reference/forward-curve ## POST /api/gpu-forward/list Get the GPU rental forward curve for a single GPU type on a given forward date. A list of `id` from response must be used in the `/download` endpoint to find the download URL. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `filter/interval` | string | Yes | Interval of the data | \[day, month] | | `filter/period` | string | Yes | Date range in YYYY/MM/DD-YYYY/MM/DD | | | `filter/type` | string | Yes | GPU type | \[A100, B200, H100] | | `paginate/num_per_page` | integer | No | How many records will be return per one page, value score in 1 to 100,default value is 50 | \[ 1 .. 100 ] | | `paginate/page_num` | integer | No | The page index number, default value is 1 | >= 1 | | `order_by/period` | string | No | Order of the file list | \[asc, desc] | ### Request Example ```json theme={null} { "filter":[ {"interval":"day"}, {"period":"2025/01/06-2025/04/06"}, {"type":"A100"} ], "order_by":[ {"period":"desc"} ], "paginate":{"num_per_page":10,"page_num":1} } ``` ### Responses Response consists of meta and data, where: * meta is the metadata regarding the request. `code` in `meta` indicates the error code of the request, with 0 indicating no error. * data contains the total number of results and a list of results, each containing the `id` that can be used to download the data. ```json theme={null} { "meta": { "code": "integer", "url": "string", "message": "string", "timestamp": "integer", }, "data": { "total": "integer", "results": [ { "interval": "string", "period": "string", "type": "string", "csv_s3_path": "string", "id": "string", "sequence_id": "integer" } ] } } ``` *** ## POST /api/gpu-forward/download Get GPU data download URL using `id`, obtained from the `/list` endpoint. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `id` | integer | Yes | ID used for find download URL | | ### Request Example ```json theme={null} { "id": 2046555026029398400 } ``` ### Responses ```json theme={null} { "meta": { "code": "integer", "url": "string", "message": "string", "timestamp": "integer" }, "data": { "csv_download_url": "string" } } ``` # GPU Index API Source: https://docs.silicondata.com/api-reference/gpu_index_api API docs for accessing GPU Index from Silicon Data. > 📌 **Note:** The GPU Index API is only available for **Plus** and **Professional** tier subscribers. Access is further gated per subscription: your subscription may restrict the available `index_version` (`hs` / `neo`) and the queryable date range. ## POST /api/gpu-index/index Get GPU index data, from starting date (from 2024-09-01) to ending date. If no date range is provided, data for today will be used by default. A returned value of `-1` or any negative number indicates that the data has not yet been generated—please wait or contact support. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `gpu` | string | YES | GPU type to query (case-insensitive). | One of `h100`, `a100`, `b200`, `mi300x`, `h200`; 1 to 20 characters | | `index_version` | string | NO | Index version: `neo` (NeoCloud) or `hs` (HyperScaler). Defaults to `neo`. May be overridden by your subscription permissions. | One of `hs`, `neo` | | `starting_date` | string or null | NO | The start date for the query in `YYYY-MM-DD` format. Defaults to today if not provided. | On or after the per-GPU minimum date (default `2024-09-01`); not in the future | | `ending_date` | string or null | NO | The end date for the query in `YYYY-MM-DD` format. Defaults to today if not provided. | Not in the future | `starting_date` must be less than or equal to `ending_date`. ### Request Example ```json theme={null} { "gpu": "h100", "index_version": "neo", "starting_date": "2025-04-01", "ending_date": "2025-04-05" } ``` ### Responses * **200**: Successful Response Index values are returned as strings formatted to two decimal places. The `index_version` field is only included when your subscription grants access to an `hs`/`neo` catalog. ```json theme={null} { "meta": { "code": 0, "url": "/api/gpu-index/index", "message": "OK", "timestamp": 1744201871 }, "data": { "gpu": "h100", "starting_date": "2025-04-01", "ending_date": "2025-04-05", "indexes": { "2025-04-01": "2.25", "2025-04-02": "2.22", "2025-04-03": "2.27", "2025-04-04": "2.26", "2025-04-05": "2.33" }, "index_version": "neo" } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` * **10008**: Parameter limit error (e.g. `starting_date` after `ending_date`, a date in the future, or an unsupported `gpu` type) ```json theme={null} { "meta": { "code": 10008, "url": "/api/gpu-index/index", "message": "starting date should be less than or equal to ending date", "timestamp": 1744289950, "args": [], "kwargs": {} }, "data": {} } ``` * **404**: Subscription not found ```json theme={null} { "meta": { "code": 404, "url": "/api/gpu-index", "message": "404, Not Found", "timestamp": 1744289950, "args": [], "kwargs": {} }, "data": {} } ``` # Silicon Mark™ GPU Performance API Source: https://docs.silicondata.com/api-reference/gpus API docs for listing individual GPU benchmark rows with scoreboard performance tiers from Silicon Data. # GPU Performance API ## GET /api/silicon-mark/v1/gpus List individual GPUs with scoreboard performance tiers. Returns paginated individual-GPU benchmark rows with server-derived Gaussian percentile tiers. In v1, scoreboard metrics are populated only when `benchmark_id` is `quick_mark`. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `page` | integer | No | Page number | >= 1, default 1 | | `per_page` | integer | No | Items per page | \[ 1 .. 300 ], default 20 | | `benchmark_id` | string | No | Benchmark that drives scoreboard rows | default `quick_mark` (v1: use `quick_mark`) | | `gpu_model` | string | No | Filter by GPU model | | | `status` | string | No | Filter by Gaussian percentile tier | `optimal`, `acceptable`, `underperforming` | | `name` | string | No | Substring filter on job name | | | `tags` | array | No | Filter by job tags (repeat for multiple; job must include all) | | | `state` | string | No | Job state filter | default `completed` when omitted | ### Responses * **200**: Successful Response ```json theme={null} { "results": [ { "id": "7554621441-0", "gpu_label": "GPU0", "gpu_id": "GPU-550e8400-e29b-41d4-a716-446655440000", "model": "NVIDIA A100-SXM4-80GB", "job_name": "GPU Benchmark Test", "node_name": "192.168.1.10", "fp16": 78.5, "fp32": 39.2, "memory_bandwidth": 1935.4, "percentile": 82.4, "status": "optimal" } ], "pagination": { "total": 32, "page": 1, "per_page": 20, "total_pages": 2, "has_next": true, "has_prev": false } } ``` # Jobs Source: https://docs.silicondata.com/api-reference/jobs # Jobs API ## POST /api/silicon-mark/v1/jobs Create a new benchmarking job. `quick_mark` is always included automatically. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `name` | string | No | Job name (auto-generated if omitted) | Max 60 characters | | `description` | string | No | Job description | Max 512 characters | | `benchmarks` | array | Yes | List of benchmarks to run. Each item is a benchmark id string or a `{benchmark_id, config}` object. `quick_mark` is always added if not present. | No duplicate (id + config) | | `node_count` | integer | No | Number of expected nodes | \[ 1 .. 256 ], default 1 | | `tags` | array | No | Job tags | Max 10 tags, 50 chars each; certain special characters forbidden | ### Request Example ```json theme={null} { "name": "GPU Benchmark Test", "description": "Testing new cluster", "benchmarks": [ "quick_mark", { "benchmark_id": "cluster_network", "config": {} } ], "node_count": 4, "tags": ["production", "gpu"] } ``` ### Responses * **201**: Created ```json theme={null} { "id": "7554621440", "name": "GPU Benchmark Test", "description": "Testing new cluster", "node_count": 4, "benchmarks": ["quick_mark", "cluster_network"], "tags": ["production", "gpu"], "token": "eyJ0eXAiOiJKV1Q...", "created_at": "2024-03-15T10:30:00Z", "expires_at": "2024-03-16T10:30:00Z" } ``` * **400**: Bad Request ```json theme={null} { "error": { "code": "PARAMETER_INCORRECT_VALUE", "message": "Benchmark 'unknown_benchmark' not found" } } ``` * **401**: Unauthorized ```json theme={null} { "error": { "code": "CLIENT_TOKEN_INVALID", "message": "Invalid or expired token" } } ``` * **409**: Conflict ```json theme={null} { "error": { "code": "RESOURCE_ALREADY_EXISTS", "message": "Job with name 'GPU Test' already exists" } } ``` *** ## GET /api/silicon-mark/v1/jobs List jobs with filtering and pagination. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `page` | integer | No | Page number | >= 1, default 1 | | `per_page` | integer | No | Items per page | \[ 1 .. 300 ], default 20 | | `sort_by` | string | No | Field to sort by (`created_at`, `started_at`, `ended_at`, `expires_at`, `name`, `state`, `node_count`, `current_nodes`) | default `created_at` | | `sort_order` | string | No | Sort direction | `asc` or `desc`, default `desc` | | `state` | string | No | Filter by job state | `created`, `starting`, `running`, `completed`, `aborted`, `failed`, `completed_with_warnings` | | `name` | string | No | Filter by name (partial match) | Max 60 characters | | `benchmark_id` | string | No | Filter by benchmark in sequence | | | `tags` | array | No | Filter by tags. Repeat the query param for multiple; a job must include all listed tags. | Max 10 | | `created_after` | datetime | No | Jobs created after this timestamp | ISO 8601 | | `created_before` | datetime | No | Jobs created before this timestamp | ISO 8601 | | `node_count_min` | integer | No | Minimum node count | \[ 1 .. 256 ] | | `node_count_max` | integer | No | Maximum node count | \[ 1 .. 256 ] | | `include_results` | boolean | No | Include GPU models and QuickMark aggregate results | default false | | `include` | array | No | Optional expansions: `performance`, `performance_nodes` (`performance_nodes` requires `performance`) | | | `has_performance_data` | boolean | No | When true, only jobs with scoreboard performance data are returned | | ### Responses * **200**: Successful Response ```json theme={null} { "results": [ { "id": "7554621440", "name": "GPU Benchmark Test", "token": "eyJ0eXAiOiJKV1Q...", "description": "Testing cluster", "state": "completed", "node_count": 4, "current_nodes": 4, "benchmark_sequence": [ { "benchmark_id": "quick_mark", "config": null }, { "benchmark_id": "cluster_network", "config": null } ], "tags": ["production"], "created_at": "2024-03-15T10:30:00Z", "started_at": "2024-03-15T10:35:00Z", "expires_at": "2024-03-16T10:30:00Z", "ended_at": "2024-03-15T11:45:00Z", "gpu_models": null, "quickmark_aggregate_results": null, "performance": null, "performance_nodes": null, "benchmarks": ["quick_mark", "cluster_network"] } ], "pagination": { "total": 42, "page": 1, "per_page": 20, "total_pages": 3, "has_next": true, "has_prev": false } } ``` *** ## GET /api/silicon-mark/v1/jobs/tags Get all unique tags from jobs belonging to the authenticated user. Scope depends on the user's role (regular users see their own jobs; customer admins see all jobs in their customer; root admins/staff see all jobs). ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Responses * **200**: Successful Response ```json theme={null} { "tags": ["production", "testing", "gpu-benchmark", "provider: aws"] } ``` *** ## GET /api/silicon-mark/v1/jobs/stats Performance tab badge count: the number of jobs whose aggregated performance status is underperforming (same scope as the performance job list). ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `benchmark_id` | string | No | Benchmark that drives performance rows | default `quick_mark` (v1 supports `quick_mark` only) | | `name` | string | No | Filter by job name | | | `tags` | array | No | Filter by tags (repeat for multiple; job must include all) | | | `state` | string | No | Filter by job state | default `completed` | | `sort_by` | string | No | Field to sort by | default `created_at` | | `sort_order` | string | No | Sort direction | `asc` or `desc`, default `desc` | ### Responses * **200**: Successful Response ```json theme={null} { "alert_job_count": 4 } ``` *** ## GET /api/silicon-mark/v1/jobs/\{job\_id} Get detailed information about a specific job. Tasks and all benchmark results are always included. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Path Parameters | Parameter | Type | Required | Description | | - | - | - | - | | `job_id` | integer | Yes | The job ID | ### Responses * **200**: Successful Response ```json theme={null} { "id": "7554621440", "name": "GPU Benchmark Test", "token": "eyJ0eXAiOiJKV1Q...", "description": "Testing cluster performance", "state": "completed", "node_count": 4, "current_nodes": 4, "benchmark_sequence": [ { "benchmark_id": "quick_mark", "config": null }, { "benchmark_id": "cluster_network", "config": null } ], "tags": ["production"], "created_at": "2024-03-15T10:30:00Z", "started_at": "2024-03-15T10:35:00Z", "expires_at": "2024-03-16T10:30:00Z", "ended_at": "2024-03-15T11:45:00Z", "benchmarks": ["quick_mark", "cluster_network"], "tasks": [ { "id": "7554621441", "job_id": "7554621440", "machine_uuid": "550e8400-e29b-41d4-a716-446655440000", "machine_ip": "192.168.1.10", "state": "completed", "failed_message": null, "created_at": "2024-03-15T10:35:00Z", "started_at": "2024-03-15T10:35:30Z", "ended_at": "2024-03-15T11:40:00Z", "gpu_model": "NVIDIA A100-SXM4-80GB", "gpu_count": 8, "pdf_report_url": "https://...", "benchmark_results": {} } ], "benchmark_results": { "cluster_network": { "benchmark_id": "cluster_network", "benchmark_name": "Cluster Network", "started_at": "2024-03-15T10:40:00Z", "ended_at": "2024-03-15T10:55:00Z", "config": {}, "results": { "avg_bandwidth_gbps": 45.2, "avg_latency": 0.8, "min_bandwidth_gbps": 42.1, "total_links_tested": 12 }, "state": "completed", "error_message": null } }, "pdf_report_url": "https://...", "scoreboard_summary": null } ``` * **404**: Not Found ```json theme={null} { "error": { "code": "RESOURCE_NOT_FOUND", "message": "Job with id 7554621440 not found" } } ``` *** ## GET /api/silicon-mark/v1/jobs/\{job\_id}/results Get the result summary of this job. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Path Parameters | Parameter | Type | Required | Description | | - | - | - | - | | `job_id` | integer | Yes | The job ID | ### Query Parameters | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `include_display_names` | boolean | No | Include human-readable field names | default false | ### Responses The response is a map keyed by `benchmark_id`, where each value is a cluster-level benchmark result object. * **200**: Successful Response ```json theme={null} { "cluster_network": { "benchmark_id": "cluster_network", "benchmark_name": "Cluster Network", "started_at": "2024-03-15T10:40:00Z", "ended_at": "2024-03-15T10:55:00Z", "config": {}, "results": { "avg_bandwidth_gbps": 45.2, "avg_latency": 0.8, "min_bandwidth_gbps": 42.1, "total_links_tested": 12, "node_count": 4, "measurements": [] }, "state": "completed", "error_message": null } } ``` *** ## DELETE /api/silicon-mark/v1/jobs/delete Soft-delete a job and all associated tasks. Only the job owner (matching `customer_id`) can delete their jobs. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `id` | integer | Yes | Job ID to delete | >= 1 | ### Request Example ```json theme={null} { "id": 7554621440 } ``` ### Responses * **200**: Job successfully deleted ```json theme={null} { "message": "Job deleted successfully", "requires_agent_stop": false } ``` * **400**: Bad Request — job is in a state that prevents deletion (e.g. running) * **403**: Permission denied — user does not own this job * **404**: Not Found — job not found *** The following job endpoints are intentionally not documented here because they are not customer-facing: * `POST /api/silicon-mark/v1/jobs/anonymous` — internal anonymous job creation flow. * `GET /api/silicon-mark/v1/jobs/current` — agent-only; authenticated with a job token, used by the benchmarking agent to fetch its job configuration. * `POST /api/silicon-mark/v1/jobs/{job_id}/generate-report` — marked INTERNAL TESTING; agent/job-token only. # RAM Index API Source: https://docs.silicondata.com/api-reference/ram_index_api API docs for accessing RAM Index from Silicon Data. > **Note:** The RAM Index API is only available for **Plus** and **Professional** tier subscribers. Access is further gated per subscription, which may restrict the queryable date range. ## POST /api/ram-index/index Get RAM index data, from starting date (from 2026-01-26) to ending date. If no date range is provided, data for today will be used by default. A returned value of `-1` or any negative number indicates that the data has not yet been generated; please wait or contact support. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `ram` | string | YES | The RAM type to query (case-insensitive). Currently supported: `GDDR6`. | One of `gddr6`; 1 to 20 characters | | `index_version` | string | NO | Index version. Defaults to `WAVG_v1`. | One of `WAVG_v1`; 1 to 20 characters | | `starting_date` | string or null | NO | The start date for the query in `YYYY-MM-DD` format. Defaults to today if not provided. | On or after `2026-01-26`; not in the future | | `ending_date` | string or null | NO | The end date for the query in `YYYY-MM-DD` format. Defaults to today if not provided. | Not in the future | `starting_date` must be less than or equal to `ending_date`. ### Request Example ```json theme={null} { "ram": "GDDR6", "index_version": "WAVG_v1", "starting_date": "2026-02-19", "ending_date": "2026-02-25" } ``` ### Responses * **200**: Successful Response Index values are returned as strings formatted to two decimal places. The `index_version` field is only included when your subscription grants access to a `WAVG_v1` catalog. ```json theme={null} { "meta": { "code": 0, "url": "/api/ram-index/index", "message": "OK", "timestamp": 1774968508 }, "data": { "ram": "GDDR6", "starting_date": "2026-02-19", "ending_date": "2026-02-25", "indexes": { "2026-02-19": "14.64", "2026-02-20": "14.64", "2026-02-21": "14.64", "2026-02-22": "14.64", "2026-02-23": "14.64", "2026-02-24": "14.87", "2026-02-25": "14.87" }, "index_version": "wavg_v1" } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` * **10008**: Parameter limit error (e.g. `starting_date` after `ending_date`, a date in the future, or an unsupported `ram` type) ```json theme={null} { "meta": { "code": 10008, "url": "/api/ram-index/index", "message": "starting date should be less than or equal to ending date", "timestamp": 1774968510, "args": [], "kwargs": {} }, "data": {} } ``` * **404**: Subscription not found ```json theme={null} { "meta": { "code": 404, "url": "/api/ram-index", "message": "404, Not Found", "timestamp": 1774968510 }, "data": {} } ``` # Recent data Source: https://docs.silicondata.com/api-reference/recent-data > 📌 **Note:** For the GPU catalog, spec filter parameters, and full GPU specs endpoints, see the [SiliconNavigator API](/api-reference/silicon-navigator) page. ## POST /api/data-hub/gpu/specs-list Get all GPU products (with their product IDs) that have price data available. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/specs-list", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 1, "results": [ { "product_id": 1, "product_slug": "nvidia-h100-sxm", "chip": "H100", "name": "NVIDIA H100 SXM", "manufacturer": "NVIDIA", "mem": 80, "mem_bus": 5120, "bus": "SXM5", "bandwidth": 3350, "tdp": 700, "fp16": 1979, "msrp": 30000, "released_date": "2022-03-22" } ] } } ``` *** ## POST /api/data-hub/gpu/specs-query Get GPU products (with their product IDs) that have price data available, filtered by a search keyword. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. All fields are optional. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `num_per_page` | integer | No | How many records will be returned per page. Default value is 50. | \[ 1 .. 100 ] | | `page_num` | integer | No | The page index number. Default value is 1. | >= 1 | | `keyword` | string | No | Keyword used to search across GPU slug, name, and chip (case-insensitive). | | ### Request Example ```json theme={null} { "num_per_page": 50, "page_num": 1, "keyword": "h100" } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/specs-query", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 1, "results": [ { "product_id": 1, "product_slug": "nvidia-h100-sxm", "chip": "H100", "name": "NVIDIA H100 SXM", "manufacturer": "NVIDIA", "mem": 80, "mem_bus": 5120, "bus": "SXM5", "bandwidth": 3350, "tdp": 700, "fp16": 1979, "msrp": 30000, "released_date": "2022-03-22" } ] } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` *** ## POST /api/data-hub/gpu/latest/price Get the latest available price for each GPU, country, and price type. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. All fields are optional. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `num_per_page` | integer | No | How many records will be returned per page. Default value is 50. | \[ 1 .. 100 ] | | `page_num` | integer | No | The page index number. Default value is 1. | >= 1 | | `keyword` | string | No | Keyword used to search across GPU slug, name, and chip (case-insensitive). | | | `product_id` | integer | No | Filter by a specific GPU product id. | | | `country` | string | No | The ISO 3166-1 alpha-2 country code. | \<= 2 characters | | `price_type` | integer | No | Filter by price type. Must be one of \[-1, 0, 1, 3, 6, 12, 100, 101, 102]. -1: Rental Spot, 0: Rental On-Demand, 1: Rental Reserved 1 month, 3: Rental Reserved 3 month, 6: Rental Reserved 6 month, 12: Rental Reserved 1 year, 100: Retail New, 101: Retail Refurbished, 102: Retail Used. | | ### Request Example ```json theme={null} { "num_per_page": 50, "page_num": 1, "keyword": "h100", "product_id": 1, "country": "US", "price_type": 0 } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/latest/price", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 1, "results": [ { "product_id": 1, "product_slug": "nvidia-h100-sxm", "chip": "H100", "name": "NVIDIA H100 SXM", "manufacturer": "NVIDIA", "date": "2025-04-05", "country": "US", "price_type": 0, "price_type_descriptioin": "Rental On-Demand", "price": 2.25 } ] } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` *** ## POST /api/data-hub/gpu/history/price Get the historical price series for a GPU over a date range. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `num_per_page` | integer | No | How many records will be returned per page. Default value is 50. | \[ 1 .. 100 ] | | `page_num` | integer | No | The page index number. Default value is 1. | >= 1 | | `product_id` | integer | Yes | Product id of the GPU to retrieve price history for. | | | `start_date` | string | Yes | Start date of the price range, in YYYY-MM-DD format. | 10-character YYYY-MM-DD | | `end_date` | string | Yes | End date of the price range, in YYYY-MM-DD format. | 10-character YYYY-MM-DD; must be >= `start_date`; range may not exceed 90 days | | `price_type` | integer | Yes | Price type. Must be one of \[-1, 0, 1, 3, 6, 12, 100, 101, 102]. -1: Rental Spot, 0: Rental On-Demand, 1: Rental Reserved 1 month, 3: Rental Reserved 3 month, 6: Rental Reserved 6 month, 12: Rental Reserved 1 year, 100: Retail New, 101: Retail Refurbished, 102: Retail Used. | | | `country` | string | No | The ISO 3166-1 alpha-2 country code. | \<= 2 characters | ### Request Example ```json theme={null} { "num_per_page": 50, "page_num": 1, "product_id": 1, "start_date": "2024-10-01", "end_date": "2024-10-31", "price_type": 0, "country": "US" } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/data-hub/gpu/history/price", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 2, "results": [ { "product_id": 1, "product_slug": "nvidia-h100-sxm", "chip": "H100", "name": "NVIDIA H100 SXM", "manufacturer": "NVIDIA", "date": "2024-10-31", "country": "US", "price_type": 0, "price_type_descriptioin": "Rental On-Demand", "price": 2.33 }, { "product_id": 1, "product_slug": "nvidia-h100-sxm", "chip": "H100", "name": "NVIDIA H100 SXM", "manufacturer": "NVIDIA", "date": "2024-10-01", "country": "US", "price_type": 0, "price_type_descriptioin": "Rental On-Demand", "price": 2.25 } ] } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` # Silicon navigator Source: https://docs.silicondata.com/api-reference/silicon-navigator ## GET /api/silicon-navigator/gpu-list Get the list of GPUs available in SiliconNavigator. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/silicon-navigator/gpu-list", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 2, "results": [ { "id": 1, "name": "NVIDIA H100 SXM", "slug": "nvidia-h100-sxm" }, { "id": 2, "name": "NVIDIA A100 PCIe 80 GB", "slug": "nvidia-a100-pcie-80-gb" } ] } } ``` *** ## GET /api/silicon-navigator/gpu-specs/params Get the available filter parameters (distinct manufacturers and chips) for the GPU specs query. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/silicon-navigator/gpu-specs/params", "message": "OK", "timestamp": 1744201871 }, "data": { "manufacturer_list": [ "AMD", "NVIDIA" ], "chip_list": [ "A100", "H100", "MI300X" ] } } ``` *** ## POST /api/silicon-navigator/gpu-specs Get the GPU specs list, with optional filtering, ordering, and pagination. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. All fields are optional; an empty body returns the first page of results ordered by `retail_price desc`. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `filter` | array | No | List of filter conditions. Each item is an object with exactly one `{ "column": "value" }` pair. String columns match by case-insensitive substring; numeric columns accept an exact value or a `"low-high"` range. | Allowed columns: `name`, `slug`, `bus`, `manufacturer`, `chip`, `mem`, `mem_bus`, `bandwidth`, `fp16`, `tdp`, `msrp`, `retail_price`, `rental_price`, `cpp`, `ppw` | | `order_by` | array | No | List of order-by conditions. Each item is an object with exactly one `{ "column": "asc" \| "desc" }` pair. Defaults to `retail_price desc`. | Direction must be `asc` or `desc`; columns as in `filter` | | `paginate` | object | No | Pagination object with `num_per_page` and `page_num`. | `num_per_page`: \[ 1 .. 100 ], default 50; `page_num`: >= 1, default 1 | ### Request Example ```json theme={null} { "filter": [ { "manufacturer": "NVIDIA" }, { "mem": "80-141" } ], "order_by": [ { "retail_price": "desc" } ], "paginate": { "num_per_page": 50, "page_num": 1 } } ``` ### Responses * **200**: Successful Response ```json theme={null} { "meta": { "code": 0, "url": "/api/silicon-navigator/gpu-specs", "message": "OK", "timestamp": 1744201871 }, "data": { "total": 1, "results": [ { "id": 1, "name": "NVIDIA H100 SXM", "slug": "nvidia-h100-sxm", "manufacturer": "NVIDIA", "chip": "H100", "bus": "SXM5", "mem": 80, "mem_bus": 5120, "bandwidth": 3350, "fp16": 1979, "tdp": 700, "msrp": 30000, "retail_price": 28500, "rental_price": 2.25, "released_date": "2022-03-22" } ] } } ``` * **422**: Validation Error ```json theme={null} { "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ] } ``` # Token Index API Source: https://docs.silicondata.com/api-reference/token_index_api API docs for accessing Token Index from Silicon Data. > **Note:** Access to the Token Index API is gated per subscription. Your subscription may restrict the available `token`, `index_version`, and queryable date range. ## POST /api/token-index/index Get daily LLM token index data for a requested token, index version, and date range. If no date range is provided, data for the server current date is used by default. Missing dates are returned as `"-1"`. ### Authorization This endpoint requires a valid user token or application token. **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `token` | string | YES | LLM token index type (case-insensitive). Currently supported: `expenditure`. | 1 to 60 characters | | `index_version` | string | NO | Token index version. Defaults to `v1` (case-insensitive). | 1 to 60 characters | | `starting_date` | string or null | NO | The start date for the query in `YYYY-MM-DD` format. Defaults to the server current date. | On or after `2025-12-01`, unless deployment config overrides it; not in the future | | `ending_date` | string or null | NO | The end date for the query in `YYYY-MM-DD` format. Defaults to the server current date. | Not in the future | `starting_date` must be less than or equal to `ending_date`. ### Request Example ```json theme={null} { "token": "expenditure", "index_version": "v1", "starting_date": "2026-04-20", "ending_date": "2026-04-26" } ``` ### Responses * **200**: Successful Response Index values are returned as strings formatted to four decimal places. `index_name` is taken from the underlying data and may be `null` if no data exists for the range. ```json theme={null} { "meta": { "code": 0, "url": "/api/token-index/index", "message": "OK", "timestamp": 1777545600 }, "data": { "token": "expenditure", "index_name": "Token Expenditure Index", "index_version": "v1", "starting_date": "2026-04-20", "ending_date": "2026-04-26", "indexes": { "2026-04-20": "100.0000", "2026-04-21": "101.2345", "2026-04-22": "-1", "2026-04-23": "103.5678", "2026-04-24": "104.0000", "2026-04-25": "-1", "2026-04-26": "105.4321" } } } ``` * **422**: Validation Error ```json theme={null} { "meta": { "code": 422, "url": "/api/token-index/index", "message": "Parameter value error: ...", "timestamp": 1777545600 }, "data": {} } ``` * **10008**: Date range error ```json theme={null} { "meta": { "code": 10008, "url": "/api/token-index/index", "message": "starting date should be less than or equal to ending date", "timestamp": 1777545600, "args": [], "kwargs": {} }, "data": {} } ``` * **34004**: Product permission is missing ```json theme={null} { "meta": { "code": 34004, "url": "/api/token-index/index", "message": "You don't have permission to access the current product...", "timestamp": 1777545600 }, "data": {} } ``` # Token Price API Source: https://docs.silicondata.com/api-reference/token_price_api API docs for accessing Token Pricebook and Token Market Pulse datasets from Silicon Data. ## POST /api/token-price/list Get token price data download list. A list of `id` from response must be used in the `/download` endpoint to find the download URL. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `filter/interval` | string | Yes | Interval of the data | \[day, month] | | `filter/period` | string | Yes | Date range in YYYY/MM/DD-YYYY/MM/DD | | | `filter/type` | string | Yes | Token price dataset type (Pricebook or Market Pulse) | \[book, pulse] | | `paginate/num_per_page` | integer | No | How many records will be return per one page, value score in 1 to 100,default value is 50 | \[ 1 .. 100 ] | | `paginate/page_num` | integer | No | The page index number, default value is 1 | >= 1 | | `order_by/period` | string | No | Order of the file list | \[asc, desc] | ### Request Example ```json theme={null} { "filter": [ {"type": "book"}, {"interval": "day"}, {"period":"2026/01/01-2026/01/07"} ], "order_by": [ {"period": "desc"} ], "paginate": { "page_num": 1, "num_per_page": 50} } ``` ### Responses Response consists of meta and data, where: * meta is the metadata regarding the request. `code` in `meta` indicates the error code of the request, with 0 indicating no error. * data contains the total number of results and a list of results, each containing the `id` that can be used to download the data. ```json theme={null} { "meta": { "code": "integer", "url": "string", "message": "string", "timestamp": "integer", }, "data": { "total": "integer", "results": [ { "interval": "string", "period": "string", "type": "string", "csv_s3_path": "string", "id": "string", "sequence_id": "integer" } ] } } ``` *** ## POST /api/token-price/download Get token price data download URL using `id`, obtained from the `/list` endpoint. ### Authorization **🔒OAuth2**: OAuth2PasswordBearer\ **Flow type**: password\ **Token URL**: token ### Request Body The request body must be in `application/json` format. | Field | Type | Required | Description | Constraints | | - | - | - | - | - | | `id` | integer | Yes | ID used for find download URL | | ### Request Example ```json theme={null} { "id": 2046555026029398400 } ``` ### Responses ```json theme={null} { "meta": { "code": "integer", "url": "string", "message": "string", "timestamp": "integer" }, "data": { "csv_download_url": "string" } } ``` # Introduction Source: https://docs.silicondata.com/introduction Welcome to the home of Silicon Data Documentation ## Products ### **SiliconNavigator™** **SiliconNavigator™** provides comprehensive insights into GPU specifications, historical pricing, and current market trends. Designed to optimize procurement strategies and resource planning, this tool equips businesses with the intelligence needed to stay competitive in the compute markets. **Tier Overview** | Feature | Level 1:
Market Pulse | Level 2:
Deep Pricing Feed | Level 3:
Full Asset Intelligence | | - | - | - | - | | Update Frequency | Daily | Daily | Daily | | Access | Portal Dashboard | Portal + API + CVS Download | Portal + API + CVS Download | | Granularity | Global averages | Platform-level | Instance-level (raw) | | Retail Pricing | ✅ Yes | ✅ Yes | ✅ Yes | | Rental Pricing | ✅ Yes | ✅ Yes | ✅ Yes | | Regional Breakdown | N.A. | Country Level | Hyper-local (datacenter-level) | | Historical Data | 7 day trend line | One Year Historical Data | Up to 8 years Historical Data | | Average Daily Data Volume | 50 | 300 | 2000 | | Ideal For | Generalists, Enthusiasts | Analysts, buyers, strategists | Quant funds, infra leaders, allocators | ### **SiliconCarbon™** **SiliconCarbon™** delivers real-time estimates of carbon emissions based on GPU usage. Tailored for environmentally-conscious businesses, this tool provides actionable insights to reduce the carbon footprint of compute operations. ### **SiliconMark™** **SiliconMark™** measures how your GPUs perform in the real world: speed, memory, power, AI serving and training, and hardware health. You create a job in the portal, run an agent on the machine, and compare results with expected specs and the rest of your fleet. ### **Silicon PriceIQ™** **Silicon PriceIQ™** leverages a machine-learning-driven model that aggregates market data to generate reliable price predictions, helping businesses, developers, and researchers make informed decisions on GPU allocation. ### **Token Pricebook™** **Token Pricebook™** captures token-level prices for major LLM providers and vendors, separating input (prompt) and output (completion) costs and standardizing all values to USD per 1 million tokens. ### **Token Market Pulse™** **Token Market Pulse™** captures aggregated token-level pricing and usage metrics for major LLM, combining cost data (input and output token prices standardized to USD per 1 million tokens) with normalized volume indices that track relative daily usage patterns. *** ## Contact Information For inquiries, product access, or additional details, please contact us at: **Email**: [support@silicondata.com](mailto:support@silicondata.com) # API Key Source: https://docs.silicondata.com/products/api-key How to create and manage API Keys for Silicon Data APIs An API Key is a string credential. It is valid for **1 year** and is used for long-term API calls, without requiring repeated login. Requests should include an Authorization header containing the word `Bearer` followed by the API Key. *** ## **Create an API Key** ### **Step 1: Create an API Key** 1. Log in to the portal. 2. Open the **API Portal** page. 3. Click to add API Key. 4. Enter a unique name and a description, then save. ### **Step 2: Generate an API Key** 1. Find the api key name you just created. 2. Click the **+** icon next to it to generate an API Key. 3. The API Key is valid for **1 year**. ### **Step 3: Download the Credential** 1. Download the credential file. 2. Retrieve the string key and use it as the Bearer token when calling Silicon Data APIs. *** ## **Delete an API Key** ### **Step 1: Delete API Keys** Delete all API Keys under the api key group first. ### **Step 2: Delete the Api Key Name** After all keys under the api key group have been removed, you can delete the api key name. > **Note:** An api key name cannot be deleted until all of its API Keys have been cleared. *** ## **If an API Key Is Leaked** 1. Delete the compromised API Key. 2. Create a new API Key under the same api key group. 3. Update your integrations to use the new key. *** ## **Contact and Support** For additional information or technical support, please contact: * **Email**: [support@silicondata.com](mailto:support@silicondata.com) # Silicon Data API Intro Source: https://docs.silicondata.com/products/api-overview Introduction to using Silicon Data's APIs Silicon Data APIs allow developers to request data from Silicon Data's various products. For example, you can create SiliconMark test jobs, query historical data from Silicon Navigator, or estimate GPU carbon emissions with SiliconCarbon. *** ## **Using Silicon Data APIs** Silicon Data uses Bearer authentication for the APIs. Requests should include an Authorization header containing the word "Bearer" followed by the token. The exception is the [/user/login API](/api-reference/user) which is used to obtain a temporary user token. Professional and Plus subscribers can also create a long-lived **API Key** from the [Silicon Data portal](https://portal.silicondata.com), which does not require repeated login. See [API Key](/products/api-key) for details. The Silicon Data APIs are accessible at [https://api.silicondata.com/](https://api.silicondata.com/), so all the API paths documented are appended to that endpoint URL. Silicon Data APIs do have rate limits. If you find your APIs being consistently throttled we recommend you implement an exponential backoff instead of immediate-retry strategy. This should not be a concern for typical usage patterns, but if you have different requirements please contact us. *** ## **Contact and Support** For additional information or technical support, please contact: * **Email**: [support@silicondata.com](mailto:support@silicondata.com) # GPU Index Intro Source: https://docs.silicondata.com/products/gpu-index Comprehensive guide to GPU Index. > 📌 **Note:** The GPU Index API is only available for **Plus** and **Professional** tier subscribers. **GPU Index** is a powerful market intelligence tool within the **Silicon Data™** ecosystem that tracks the performance and pricing trends of key GPU models over time. It empowers users with insights to analyze cost fluctuations, evaluate market movements, and make data-driven decisions for procurement, investment, and competitive benchmarking. *** ## **Key Features** * **Historical GPU Pricing Index** * Access time-series GPU rental price data across selected date ranges. * Evaluate short- and long-term pricing trends to anticipate market changes. * **Daily Index Values** * Retrieve standardized GPU index values calculated from aggregated rental price data. * Stay informed on the price performance trajectory of leading GPUs. * **Programmatic Access via API** * Query GPU index data using simple HTTP POST requests. * Easily integrate GPU price trends into dashboards, trading algorithms, or analytics workflows. *** ## **Example Use Cases** * **Procurement Planning**:\ Forecast budget requirements and optimal purchasing windows for GPU deployments. * **Market Intelligence**:\ Monitor pricing trends for investment evaluation or vendor comparison. * **Cloud Cost Optimization**:\ Use GPU Index metrics to benchmark and renegotiate cloud rental costs. *** # GPU Index Announcements Source: https://docs.silicondata.com/products/gpu-index-announcements > 📌 **Note:** The GPU Index API is only available for **Plus** and **Professional** tier subscribers. Subscribe via email: