NAV
shell

Introduction

Last updated: August 2026

Welcome to the General Index documentation site. This site contains the information required to submit and extract data from the General Index system, including file formats and API specifications.

For questions regarding integrating GX data into your systems and submitting data, please contact support@general-index.com.

Methodology Framework

GX generates pricing assessments under a standard set of procedures that is mathematical, consistent and fully transparent. This is defined in the GX Methodology Framework, available online.

This documentation does not take precedence over the Methodology Framework or any contractual agreements in place.

Data Notices

GX sends out ad-hoc data notices containing information on new data series, updates to metadata and corrections that apply to data more than 30 days old. We encourage all users of GX data to sign-up to receive these notices. New users can sign-up here:

https://pages.general-index.com/datanotices

Index Modules

Index Series are grouped for licensing and access via Index Modules. Index Modules correspond to trading hubs and/or commodities.

Example Index Modules:

GlobalIndexes

NorthAmericaCrude

EuropeanCrude

EuropeanGasoline

EuropeanJet

There are currently around 60 Index Modules covering crude, refined products, marine fuels, natural gas, biofuels, carbon and power markets.

All data within a single Index Module is available to licensed users including all GX index series, index types, forward periods and timestamps for that Module.

Individual Index Series may be contained within multiple Index Modules.

The mapping of Index Series to Index Modules is published in the IndexModule column of the Data Catalogue. A series that belongs to more than one Module appears once per Module.

Time zones

Please note: All times and dates associated with Index Series are subject to time zones. Time zones are specified in metadata and are as provided in the IANA Time Zone Database (so, for example Europe/London)

Index Series Format

Last updated: August 2026

This section describes how GX Index Series are defined. It outlines standard data fields and file structures that are available across GX systems.

GX Index Codes

GX assigns a unique identifier to each Index Series – each identifier consists of the letters ‘GX’ followed by 7 digits (e.g. GX0000001), along with a title describing the content of the series (e.g. Global Crude Index (GCX) London Assessments).

Index Methodology Factsheets

A full definition of each index series is documented within the relevant factsheet. Factsheets include time zone, units of measure, location, pricing basis and calculation methodology.

Factsheet access

PDF versions of the factsheets are available from the factsheet server via this URL

https://factsheets.g-x.co/[GX_CODE].pdf

So, for example, the factsheet for Global Crude Index (GCX) London Assessments can be obtained from https://factsheets.g-x.co/GX0000001.pdf

Factsheet content is also available as JSON, for integrations that need it programmatically.


# List factsheets for a module
curl "https://api.g-x.co/factsheets?module=EuropeanGasoline" \
     -H 'Authorization: ApiKey [YourGXApiKey]'

# Full factsheet detail for one or more codes
curl "https://api.g-x.co/factsheets/details?code=GX0000004" \
     -H 'Authorization: ApiKey [YourGXApiKey]'

GET https://api.g-x.co/factsheets

Parameter Required Description
module Optional Index Module name. Returns code, title, status and group for each series

GET https://api.g-x.co/factsheets/details

Parameter Required Description
code Optional One or more GX codes
title Optional Filter by title
status Optional Filter by status, e.g. Live

Returns the full factsheet record including aliases, description, methodology and metadata.

Index Keys

Each series has several time series associated with it. Individual time series are defined by the following keys. All keys are stored as text fields.

Key Description Type Examples
Code Index Series code. GX followed by 7 digits Text GX0000001
TimeRef The timestamp of the assessment, always 4 digits. Note the time zone of the timestamp is defined in the Factsheet and metadata HHMM 1630, 0700, 0000
PeriodType Granularity of the assessment period. Text Month, Prompt
Period Name of the period. This field is 1 when Period Type is Prompt. Text 1, 2

Index Types

For a specific key combination (Index code at a particular TimeRef, Period, PeriodType), GX produces values for Index Types as defined by the factsheet, for example to denote Mid, High and Low.

Decimal places and precision of numerical fields are defined in the factsheet.

Index Type Description Type
Mid n/a Double
High n/a Double
Low n/a Double
Index This index type can appear Double
Close n/a Double
Explanation Assessment explanation / rationale Text

Additional Columns & Metadata

All GX codes carry the following columns:

Column Description Type Example(s)
FactsheetVersion Version number of the Factsheet used to generate the assessment value. Double 1.0
PeriodAbs Absolute period which the assessment value relates to. String 2020-04
PeriodRel Relative period which the assessment value relates to. For most series, this reflects a future delivery period. In some markets, negative values may be published to reflect historic periods The granularity applicable to each series is defined by the relevant Factsheet and available in metadata. Integer 1, 2
PeriodStart The start date of the delivery window. Defined in ISO8601 format with option for time zone to be defined in the column header. Text 2020-07-01T00:00:00
PeriodEnd The end date of the delivery window. Defined in ISO8601 format with option for time zone to be defined in the column header. Text 2020-07-31T23:59:59
RecordStatus Column deprecated. N in all cases Text N

In addition to the value columns, metadata from the factsheet is provided to aid the consumption of the Index Series:

Column Description Type Example(s)
Alias Text ‘short hand’ descriptor relating to a particular TimeRef, PeriodType and Period Text GCXC
Title Text description of the data series. Text Eurobob Oxy Gasoline NWE FOB Barges
Timezone The timezone of the timestamp (TimeRef). Time zones are as defined in the IANA Time Zone Database Text Europe/London
Units Units of measure Text BBL NULL
Currency Currency Text USD NULL
HolidayCalendar The holiday calendar that defines when the Index Series is not published Text Holidays_GX_Europe
Source This will be GX unless the data is reproduced from a third party Text GX
DeliveryBasis Freight and delivery information Text FOB Barges
PricingBasis Flat or difference to another market Text Flat, Diff
TradingHub The physical location Text NWE, Global
Commodity Underlying commodity Text Crude
Frequency Assessment frequency Text Daily, Monthly

Holiday Calendars


curl "https://api.g-x.co/index?group=Meta_Holiday_Calendars&from=all&metadata=true" \
     -H 'Authorization: Bearer [YourGXAccessToken]'

GX maintains a list of holiday calendars for GX Index Series and third-party timeseries. Calendar files have the following format:

Field Name Description Type Example(s)
Calendar The name of the calendar. Where relevant this will appear in the Factsheet. Text Holidays_GCX Holidays_CME
Date Date specified without a time zone. YYYY-MM-DD 2020-12-25
Value(S) Holiday name or Yes. Text Christmas

Holiday calendars can be queried through the API. Please see example. The holiday calendar should be queried in UTC time zone and the time component of the Date field ignored in the response.

Absolute Period Format

The granularity of absolute assessment periods (and held in PeriodAbs) is defined by the factsheet. Absolute assessment periods are published in the following format:

Granularity / PeriodType Description Format Example
n/a No delivery period applies Null Null
Prompt Prompt delivery period Prompt Prompt
12Hour 12 hour period. Shown as start of period YYYY-MM-DDTHH:MM 2020-03-22T12:00
Day Calendar day YYYY-MM-DD 2020-04-01
Week ISO week number YYYY W[01-53] 2020 W04
HalfMonth First or second half of a calendar month. Shown as start date of period YYYY-MM-DD 2020-04-16
Weekend Weekend period. Shown as start date of period YYYY-MM-DD 2026-08-15
Month Calendar month YYYY-MM 2020-04
Quarter Quarter of a calendar year YYYY Q[1-4] 2020 Q1
Season Calendar season YYYY [SUM/WIN] 2020 WIN
HalfYear First or second half of a calendar year YYYY H[1-2] 2020 H2
GasYear Gas Year YYYY 2020
Year Calendar year YYYY 2020
Cycle Pipeline cycle number C[0-9][0-9] C03

API Specification

Authorisation

Last updated: August 2026

General Index provides multiple ways to authenticate:

API key

GX Go users can generate their own API keys:

  1. Sign in to GX Go at https://go.g-x.co
  2. Click your name at the bottom of the left sidebar, then Settings
  3. Go to the Token Generation section and generate a new key

The name you give a key is for your own reference. Existing keys are listed with a copy button, so a key can be retrieved at any time. Keys can also be removed from the same screen.

If you do not have access to GX Go, contact GX Support for an API key.

Header authentication

# API key in the Authorization header - works on every endpoint
curl "https://api.g-x.co/index?code=GX0000004&from=5d" \
     -H 'Authorization: ApiKey [YourGXApiKey]'
Parameter Required
Authorization Optional ApiKey yourGXApiKey, Bearer yourGXAccessToken or Basic base64(user:password)

Authorization: ApiKey is the recommended scheme. It works on every endpoint.

URL authentication

Parameter Required Description
token Optional Either API key or basic token

Basic token

# Basic token passed in url
# The token used in the example was generated for user@user.com:password
curl "https://api.g-x.co/index?token=dXNlckB1c2VyLmNvbTpwYXNzd29yZA=="

A basic token is generated from the username and password, Base64 encoded separated by a colon. It can be generated from command line, for example in macOS / Linux:
echo -n "username:password" | base64

Username and password

When an account is created, GX sends an invitation email to the address provided. Follow the link in that email to set your password. Contact GX Support if you need it reset.

Legacy JWT authentication

Log in

This endpoint returns a jwt access token and a refresh token. When access token is expired, refresh token can be used to generate a new one.

curl -u 'login:password' 
  https://api.g-x.co/auth/login

If successful, the above command returns a status code 200 and token, otherwise please check Errors section.

{
    "token": "YourGXAccessToken",
    "refreshToken": "your refresh token"
}

HTTP Request

GET https://api.g-x.co/auth/login

Request Body

Parameter Description
username username of account
password password of account

Refresh Access Token

This endpoint returns a new access token.

curl -X POST
  https://api.g-x.co/auth/refresh
  -d '{
    "refreshToken": "your refresh token"
    }'

If successful, the above command returns a status code 200 and token, otherwise please check Errors section.

{
    "token": "YourGXAccessToken",
    "refreshToken": "your refresh token"
}

HTTP Request

POST https://api.g-x.co/auth/refresh

Request Body

your refresh token

Log out

Log out the user by invalidating the refresh token.

curl -X POST
  https://api.g-x.co/auth/logout
  -H "Authorization: Bearer YourGXAccessToken"
  -d '{
    "refreshToken": "your refresh token"
    }'

If successful, the above command returns status code 200, otherwise please check Errors section.

HTTP Request

POST https://api.g-x.co/auth/logout

Data Catalogue

Last updated: August 2026

Catalogue Endpoint


curl "https://api.g-x.co/catalogue?module=EuropeanGasoline \
     -H 'Authorization: Bearer [YourGXAccessToken]'

The above command returns a CSV response
Code,PeriodType,TimeRef,IndexModule,Alias,Bid,Commodity,Currency,DeliveryBasis,EndDate,FactsheetVersion,Frequency,Group,High,HolidayCalendar,Increment,Index,InterAffiliateDataAccepted,LastTradeDateCalendar,LaunchDate,Low,MapLocation,MapZoom,Method,Mid,Offer,ParentCodes,PeriodMax,PeriodMin,PermissionLatestStatus,Precision,PricingBasis,PriorityToTransactions,SoleSourcedDataAccepted,Source,StartDate,Status,ThirdPartyMappings,TimeRefDetails,TimeZone,Title,TradingHub,Units
GX0000614,Month,1630,EuropeanGasoline,EBOB1V6M,,Gasoline,USD,FOB Barges,,1.0,Daily,Prod_Indexes,,Holidays_GX_Europe,0.25,Y,N,CalendarMonth,2021-06-11,,51.9244 4.4778,7,,,,GX0000002 GX0000002,1,1,PRIMARY,2,Diff,N,N,GX,2021-02-25,Live,LSEG:GX0000614L1630c1 Bloomberg:GIOS0614 Index,London Close,Europe/London,Eurobob Oxy Gasoline NWE FOB Barges (E5) M1 vs M6,NWE,MT
GX0000472,Prompt,1630,EuropeanGasoline,,,Gasoline,USD,CIF Cargoes,,1.0,Monthly,Prod_Indexes,Y,Holidays_GX_Europe,0.0001,,N,Null,2021-06-11,Y,,,,Y,,,1,1,PRIMARY,4,Flat,N,N,GX,2008-01-31,Live,LSEG:GX0000472L1630P Platts:AAWZB03 Bloomberg:GIOS0472 Index,London Close,Europe/London,Gasoline 95 RON MED CIF Cargoes Monthly Average (MAVG),MED,MT

HTTP Request

GET https://api.g-x.co/catalogue

The endpoint returns a list of all available Index data series. URL parameters allows filtering data by Module.

URL Parameters
Parameter Required Default Description
module Optional None Module name, if not provided all indexes are returned
token Optional None If Authorization header is missing, Basic Auth Token can be passed as a parameter
Response Columns
Column Description
Code GX Index Series code
PeriodType Granularity of the assessment period
TimeRef Assessment timestamp, 4 digits
IndexModule Module the series is licensed under. A series in multiple Modules appears once per Module
Alias Short-form descriptor for this TimeRef / PeriodType / Period
Bid, Offer, High, Low, Mid, Index Y where the series publishes that Index Type
Commodity Underlying commodity
Currency Currency
DeliveryBasis Freight and delivery information
StartDate First date of published history
EndDate Last date of published history. Blank while the series is live
LaunchDate Date the series was launched
FactsheetVersion Current factsheet version
Frequency Assessment frequency
Group Data group. Prod_Indexes for published index data
HolidayCalendar Calendar defining when the series is not published
Increment Minimum price increment (tick size)
InterAffiliateDataAccepted Whether inter-affiliate transactions are accepted
LastTradeDateCalendar Trade calendar used to determine contract expiry. See Trade Calendars
MapLocation, MapZoom Latitude / longitude and zoom level used for map display
Method Reserved. Currently unpopulated
ParentCodes Codes this series is derived from
PeriodMin, PeriodMax Lowest and highest relative period published
PermissionLatestStatus PRIMARY or SECONDARY
Precision Decimal places
PricingBasis Flat or Diff
PriorityToTransactions Whether transactions take priority in the assessment
SoleSourcedDataAccepted Whether sole-sourced data is accepted
Source GX unless reproduced from a third party
Status Live, Dev or Archive
ThirdPartyMappings Identifiers on third-party distribution platforms. Informational only — not a statement of where the series is distributed
TimeRefDetails Human-readable description of the TimeRef
TimeZone IANA time zone of the TimeRef
Title Full series title
TradingHub Physical location
Units Units of measure

Trade Calendars

Last updated: August 2026

Trade calendars define contract expiry for index series that reference a forward contract. The calendar applicable to a series is published in the LastTradeDateCalendar column of the Data Catalogue.


# List available trade calendars
curl "https://api.g-x.co/trade/calendars" \
     -H 'Authorization: ApiKey [YourGXApiKey]'

# Which contract is live on a given date
curl "https://api.g-x.co/trade/calendars/CalendarMonth/contract?date=2026-08-21" \
     -H 'Authorization: ApiKey [YourGXApiKey]'

The above returns a JSON response

{
    "validUntil": "2026-08-31T00:00:00",
    "contract": "2026-09",
    "calendarName": "CalendarMonth"
}

List trade calendars

GET https://api.g-x.co/trade/calendars

Returns the name of every available trade calendar.

Preview a trade calendar

GET https://api.g-x.co/trade/calendars/[tradeCalendarName]

Returns every contract in the calendar with the date it is valid until.

Get contract date

GET https://api.g-x.co/trade/calendars/[tradeCalendarName]/contract

Returns the contract live on a given date.

Parameter Required Description
date Required Date in YYYY-MM-DD format

Data Structure

Indexes are stored as timeseries data with associated symbols, metadata and values

Symbols

Individual time series are accessible through the following keys. A combination of symbols uniquely defines a time series. Symbol fields are case sensitive and are returned as text strings.

Field explanation example
Code GX Index Series code GX0000001
TimeRef (nb: Case sensitive) Timestamp, expressed as 4 digits. Timezone of timestamp is defined in metadata 1630 0700
PeriodType (nb: Case sensitive) Granularity of the assessment period Month Prompt
Period Name of the Period 1

Metadata

The Fields listed below represent the standard metadata published for all Index Series. Additional Metadata is available for individual Index Series where appropriate. Note Field names are case sensitive.

Field explanation example
Title Long-form name Global Crude Index
Alias Short-form name GCXC
TimeZone (nb: Case sensitive) Timezone that the Index Series is published in Europe/London America/New_York
Currency Currency USD
Units Units BBL
HolidayCalendar (nb: Case sensitive) Relevant holiday calendar Holidays_GCX
Source This will be GX unless the data is reproduced from a third party GX
DeliveryBasis Freight and delivery information FOB Barges
PricingBasis Flat or difference to another market Flat, Diff
TradingHub The physical location NWE, Global
Commodity Underlying commodity Crude
Frequency Assessment frequency Daily, Monthly

Values

The Fields listed below represent the standard timeseries values associated with each Index Series. Additional Value series are available where appropriate – in particular reflecting multiple Index Value series. All field names are case sensitive.

Field explanation example
FactsheetVersion Integer value of relevant Factsheet methodology 1
PeriodAbs Absolute period the assessment value relates to 2020-07
PeriodRel Relative period the assessment value relates to. For most series this is a forward delivery period 1
PeriodStart ISO8601 format. Returned in timezone the Index Series is published in
PeriodEnd ISO8601 format. Returned in timezone the Index Series is published in
RecordStatus Currently unsupported. Default N N
[Index Values] Values as defined in the Index Types Index High Volume

Pull Index Data Series

Index Endpoint

The endpoint retrieves index timeseries data in the provided time range. URL parameters allows filtering data by Code or metadata fields, and selecting specific columns to return in the response.

HTTP Request
curl "https://api.g-x.co/index?code=GX0000004&metadata=true" \
     -H 'Authorization: Bearer [YourGXAccessToken]'
The above command returns a CSV response
Code,Period,PeriodType,TimeRef,Date(UTC),FactsheetVersion,High,Low,Mid,PeriodAbs(S),PeriodEnd(D),PeriodRel(S),PeriodStart(D),RecordStatus(S),Alias(MD-S),Commodity(MD-S),Currency(MD-S),DeliveryBasis(MD-S),Frequency(MD-S),HolidayCalendar(MD-S),PricingBasis(MD-S),Source(MD-S),TimeZone(MD-S),Title(MD-S),TradingHub(MD-S),Units(MD-S)
GX0000004,1,Prompt,1730,2022-11-29T17:30:00,2,774.75,774.25,774.5,Prompt,2022-12-07T23:59:59,1,2022-12-01T00:00:00,N,EUROBOBNONC,Gasoline,USD,FOB Barges,Daily,Holidays_GX_Europe,Flat,GX,Europe/London,Eurobob Non Oxy Gasoline NWE FOB Barges,NWE,MT
GX0000004,1,Prompt,1630,2022-11-29T16:30:00,1,774.75,774.25,774.5,Prompt,2022-12-07T23:59:59,1,2022-12-01T00:00:00,N,,Gasoline,USD,FOB Barges,Daily,Holidays_GX_Europe,Flat,GX,Europe/London,Eurobob Non Oxy Gasoline NWE FOB Barges,NWE,MT
GX0000004,1,Prompt,1730,2022-11-28T17:30:00,2,732.25,731.75,732,Prompt,2022-12-06T23:59:59,1,2022-11-30T00:00:00,N,EUROBOBNONC,Gasoline,USD,FOB Barges,Daily,Holidays_GX_Europe,Flat,GX,Europe/London,Eurobob Non Oxy Gasoline NWE FOB Barges,NWE,MT
GX0000004,1,Prompt,1630,2022-11-28T16:30:00,1,732.25,731.75,732,Prompt,2022-12-06T23:59:59,1,2022-11-30T00:00:00,N,,Gasoline,USD,FOB Barges,Daily,Holidays_GX_Europe,Flat,GX,Europe/London,Eurobob Non Oxy Gasoline NWE FOB Barges,NWE,MT
# All indexes published today (by London timezone) with username / password authorization: 
curl -u 'username:password' https://api.g-x.co/index?timezone=Europe/London
# All indexes published today (UTC timezone) with metadata: 
curl -u 'username:password' https://api.g-x.co/index?metadata=true
# Last 10 days data of code GX0000002: 
curl -u 'username:password' https://api.g-x.co/index?code=GX0000002&from=10d
# All Diesel indexes for last 5 days: 
curl -u 'username:password' https://api.g-x.co/index?metadata.Commodity=Diesel&from=5d
# Select specific columns - only High, Low, Mid (Code, Period, PeriodType, TimeRef always included):
curl -u 'username:password' https://api.g-x.co/index?code=GX0000004&columns.values=High,Low,Mid
# Select only metadata columns with Period wildcard:
curl -u 'username:password' https://api.g-x.co/index?code=GX0000004&metadata=true&columns.metadata=Commodity,Currency,Period*
# Authorization token passed in url
# The token used in the example was generated for user@user.com:password
curl "https://api.g-x.co/index?from=5d&token=dXNlckB1c2VyLmNvbTpwYXNzd29yZA=="

GET https://api.g-x.co/index

URL Parameters
Parameter Required Default Description
code Optional None Comma separated list of GX codes. If not provided all indexes are returned
period Optional None Comma separated list of period values. If not provided all periods are returned
periodtype Optional None Comma separated list of periodtype values. If not provided all periodtypes are returned
timeref Optional None Comma separated list of timeref values. If not provided all timerefs are returned
module Optional None Index module to return, ex. module=NorthAmericaCrude. If not provided all modules are returned. Cannot be used in conjunction with the code, period, or periodtype parameters
group Optional Prod_Indexes Use default value unless advised otherwise by GX Support. Note: This is case sensitive.
from Optional today Start date, accepted values:
  • today - beginning of the current day in provided timezone parameter
  • *v - specific number of values back
  • *d - specific number of days back
  • *m - specific number of months back
  • *y - specific number of years back
  • all - no date restriction
  • ISO date ex. 2022-11-21T10:00:00
to Optional today End date, accepted values:
  • today - end of the current day in provided timezone parameter
  • *v - specific number of values back
  • *d - specific number of days back
  • *m - specific number of months back
  • *y - specific number of years back
  • ISO date ex. 2022-11-21T11:00:00
metadata.field Optional None Filter indexes by field value, ex. metadata.Commodity=Diesel
metadata Optional false Controls whether returns metadata, accepted values: true / false / only
columns.metadata Optional None Comma separated list of metadata column names to return. Column names must match exact names in the response. Supports wildcard (*) to select multiple columns with same substring, ex. Period* selects all columns starting with "Period". Only applicable when metadata is enabled. Note: Code, Period, PeriodType, TimeRef are always returned.
columns.values Optional None Comma separated list of value column names to return. Column names must match exact names in the response. Supports wildcard (*) to select multiple columns with same substring, ex. Period* selects all columns starting with "Period". Note: Code, Period, PeriodType, TimeRef are always returned.
order Optional desc Sort order of results by date. Accepted values: desc (most recent first, default) / asc
ValueField Optional None Filter by the value of any value column, ex. FactsheetVersion=1. Works the same way as metadata.field, but applies to value columns rather than metadata
delta Optional false Whether use time range against transaction time or insertion time. Accepted values: true / false. This can be used to run queries showing what has changed in the database in the requested date range.
timezone Optional UTC A timezone name for requested time range and returned data. Time zones are as defined in the IANA Time Zone Database.
token Optional None If Authorization header is missing, Basic Token can be passed as a parameter. See url authentication above.
Header Parameters

See header authentication above.

Parameter Required
Authorization Optional Bearer yourGXAccessToken or Basic base64(user:password)
Accept Optional text/csv (default) or application/json

Column Selection Notes

# Select only essential price columns (required columns automatically included):
curl -u 'username:password' "https://api.g-x.co/index?code=GX0000004&columns.values=High,Low,Mid,Date(UTC)"
# Select specific metadata columns using wildcard:
curl -u 'username:password' "https://api.g-x.co/index?code=GX0000004&metadata=true&columns.metadata=Commodity,Currency,Period*"
# Combine value and metadata column selection:
curl -u 'username:password' "https://api.g-x.co/index?code=GX0000004&metadata=true&columns.values=High,Low&columns.metadata=Commodity,Currency"
# JSON response with selected fields:
curl -H 'Accept: application/json' -u 'username:password' "https://api.g-x.co/index?code=GX0000004&columns.values=High,Low,Mid"

Submit Data

Last updated: August 2026

GX accepts data submissions via file uploads to the GX data lake. File uploading has two steps

File Metadata Posting

First step:

curl -X POST
  https://api.g-x.co/file
  -d '{
        "groupName":"group01",
        "fileName":"test.csv",
        "fileType":"SOURCE",
        "fields":[
                {
                    "name":"String field",
                    "value":"test"
                },
                {
                    "name":"Integer field",
                    "value":"1"
                },
                {
                    "name":"Float field",
                    "value":"1.1"},
                {
                    "name":"Date field",
                    "value":"2017-09-05"
                }
                ...
            ]
     }'
  -H "Authorization: ApiKey [YourGXApiKey]"

If successful, the above command returns status code 201, otherwise please check Errors section.

This endpoint stores the file metadata and returns a location to PUT the file content. If the file group requires metadata for the uploaded file, you can override default values and provide values for metadata fields that require values. On creation the call returns a 'location', you must PUT the file content to this location.

HTTP Request

POST https://api.g-x.co/file

Request Body

Data Notes
groupName Provided by GX Support and unique to your upload, for example Input_AcmeTrading_PushAPI)
fileName File name should not be blank, must be unique for each file upload
fileType type of the file, available types are: SOURCE (Default. Use this unless advised otherwise by GX Support) and NCSV
fields Optional Meta data
* name field name
* value field value

HTTP Response

Response:

{
    "location": "https://fileUploadURL",
    "fileId": "file id"
}

A JSON object is returned with an url to upload a file content.

File Uploading

This endpoint saves the file content into the GX Input Data Repository. You should use the 'location' link for the file from the first step response body.

Second step:

curl -X PUT --data-binary @"file-name.csv"
   "https://fileUploadURL"

If successful, the above command returns status code 200.

HTTP Request

Use --data-binary body option to select file from your local machine.

PUT https://fileUploadURL

Download PDF Reports

Last updated: August 2026


## FILES
curl "https://api.g-x.co/file/search?size=1000&from=0&query=groupName%3DProd_Reports" \
     -H 'Authorization: Bearer [yourGXAccessToken]'


The above returns a JSON response

{
  "from": 0,
  "totalSize": 100,
  "items": [
    {
      "fileName": "GX_MiddleEastCrude_Benchmark_210324.pdf",
      "fileType": "SOURCE",
      "groupName": "Prod_Reports",
      "fid": "c6da572e-d71f-4bdb-8394-a31396cf7c7a",
      "fields": {
        "SKIP_METADATA": "false"
      },
      "arrivalTime": "2021-03-24T14:47:08.399",
      "owner": "system",
      "size": 122903,
      "checkSum": "300ffa79f079f365006e9f1c85b3dcae",
      "zipped": false,
      "shared": false,
      "removed": false,
      "version": 1,
      "rootId": "c6da572e-d71f-4bdb-8394-a31396cf7c7a"
    },
    {
      "fileName": "GX_MiddleEastCrude_Benchmark_210323.pdf",
      "fileType": "SOURCE",
      "groupName": "Prod_Reports",
      "fid": "2b490176-b385-49cc-9453-bf25fe39c969",
      "fields": {
        "SKIP_METADATA": "false"
      },
      "arrivalTime": "2021-03-23T14:40:57.861",
      "owner": "system",
      "size": 134910,
      "checkSum": "2cac31e0c971600f336c69b32b399665",
      "zipped": false,
      "shared": false,
      "removed": false,
      "version": 1,
      "rootId": "2b490176-b385-49cc-9453-bf25fe39c969"
    }
  ]
}

Second step:


curl -v "https://api.g-x.co/file/c6da572e-d71f-4bdb-8394-a31396cf7c7a/download"
     -H 'Authorization: Bearer [yourGXAccessToken]'


The above returns the file as the response.

For certain Index Modules, General Index publishes PDFs on a regular (daily or weekly) basis. If you have been permissioned, reports are available using the same credentials.

There are two steps to downloading PDFs:

  1. First step is retrieve file IDs
  2. Second step is to retrieve the specific file based on the ID obtained.

Both steps authenticate with the Authorization header. The token URL parameter is not accepted here.

File naming

All PDFs follow the same naming convention. Files are named according to the Index Module, report type and publishing date in the following format:

GX_[Index Module]_[Report Type]_yymmdd.pdf

For example: GX_MiddleEastCrude_Benchmark_210324.pdf

The timezone of the date in the file name is according to the location of the Index Module.

Reports that are published as a correction to the original report will have the date of the original report in the filename but have a more recent arrivalTime.

Retrieve file IDs

HTTP Request

GET https://api.g-x.co/file/search

Header Parameters
Parameter Required
Authorization Required ApiKey yourGXApiKey
URL Parameters
Parameter Description
groupName Prod_Reports unless advised otherwise by GX Support.
size The maximum size of returned hits list. Max size is 1000. Default size is 100.
from The index of the first hit. It allows to do paging easily. Default value is 0.

Retrieve specific file

The URL is in the header of the response.

HTTP Request

curl -v "https://api.g-x.co/file/[fid]/download"

Header Parameters
Parameter Required
Authorization Required ApiKey yourGXApiKey
URL Parameters
Parameter Description
fid fileID to retrieve

Report Holiday Calendars

PDF reports are published daily, Monday to Friday apart from on dates specified in the relevant holiday calendar as specified below:

Report Name Holiday Calendar
GX_AsiaLPG_Benchmark Holidays_GX_Singapore
GX_EuropeanLPG_Benchmark Holidays_GX_Europe
GX_MiddleEastCrude_Benchmark Holidays_GX_Singapore
GX_NorthAmericaCrude_Benchmark Holidays_GX_NorthAmerica

Please see documentation for instructions to access detailed holiday calendar information.

Errors

The General Index API uses the following status codes:

Status Code Meaning
400 Bad Request -- The request you sent is incorrect.
401 Unauthorized -- Your credentials are missing or incorrect.
403 Forbidden -- The requested resource is hidden and may be accessed by the administrators only.
404 Not Found -- The specified resource could not be found.
405 Method Not Allowed -- You tried to access a resource with an invalid method.
406 Not Acceptable -- You requested a response format that is not supported. Supported formats are text/csv (default) and application/json.
410 Gone -- The resource requested has been removed from our servers.
429 Too Many Requests -- You're requesting too many times! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.

Data Integration Guide

Last updated: December 2024

Approach

The following approach is recommended to receive an accurate and timely replica of GX data.

Regular Data Pull

# All indexes published within a 15 minute time window with username / password authorization: 
"https://api.g-x.co/index?from=2022-09-01T17:00:00&to=2022-09-01T17:14:59.999&metadata=true&delta=true&token=[YourGXAccessToken]"

Query the /index api every 15 minutes with the following parameters.

HTTP Request

https://api.g-x.co/index

Parameter Value Example
from 16 mins before the current time, expressed as UTC 2022-09-01T17:00:00
to 1 min before the current time, expressed as UTC 2022-09-01T17:14:59.999
delta Set to true to get all changes to the database in that time period true
metadata Set to true to include metadata fields true

The range for each query should end 1 minute prior to the query time to ensure that all data in range is available via the API.

Data will be returned in UTC by default. Each series can be translated into the publication timezone using the metadata associated with the series.

Only columns updated during the insert range are returned. Where values for one or more columns have been updated during the range selected, unchanged columns will return empty values.

Metadata Request

# Metadata only
"https://api.g-x.co/index?metadata=only"

Metadata can be returned without values by passing a metadata value of 'only'.

Please note that Metadata values may be updated from time to time. Minor updates will not be included in a Data Notice.

Python SDK

Last updated: August 2026

SDK Introduction

GX maintains a Python SDK that allows developers to query and download index series data, and upload submissions to the GX data lake.

The SDK does not cover the full API surface — it wraps the commonly used features.

Installation

pip3 install generalindex

Current version, supported Python versions and the full changelog are on the PyPI project page.

Authentication

import generalindex as gx

# Option 1 - pass a token directly
api = gx.GxApi(token="[YourGXApiKey]")

# Option 2 - set once for the whole session
gx.set_token("[YourGXApiKey]")
api = gx.GxApi()

# Option 3 - environment variable NG_API_AUTHTOKEN
api = gx.GxApi()

The SDK reads credentials from environment variables, or they can be set in code.

Variable Description
NG_API_AUTHTOKEN API key. See Authorisation for how to generate one
LOGIN / PASSWORD Username and password, as an alternative to an API key
NG_API_ENDPOINT Optional. Defaults to https://api.g-x.co

A token can also be passed at instantiation with the token parameter, or set once for the session with gx.set_token() / gx.set_credentials(). Any handler created afterwards picks it up automatically. A token passed directly takes precedence over the environment variable.

Handlers

Handler Purpose
GxApi Query index data from the GX API
DatalakeHandler Download, upload and read files from the data lake
Timeseries Work with time series data

Documentation

Full documentation is on the PyPI project page.

Example Code

You can download an example script using the SDK.

MCP Server

Last updated: August 2026

MCP Introduction

General Index provides a remote MCP (Model Context Protocol) server that connects AI assistants — such as Claude, ChatGPT and AI-enabled developer tools — directly to GX index data. Once connected, you can ask your assistant questions in plain language and it will query GX data on your behalf.

The server URL is:

https://mcp.g-x.co/mcp

The server follows the open MCP standard, so it works with any MCP-compatible client. No advanced settings, headers or keys are required — authentication is handled by signing in with your email address.

Requesting Access

Access to the MCP server is enabled per user by General Index. Before connecting, contact GX Support or your account manager and ask for MCP access for your email address.

Your assistant will only be able to access the data your GX account is entitled to.

Signing In

When you connect for the first time, a GX sign-in page opens in your browser:

  1. Enter your email address (the one enabled for MCP access).
  2. A verification code is sent to that address. The code expires in 15 minutes.
  3. Enter the code to complete sign-in. No password is required.

Connecting from Claude

Claude Team and Enterprise plans

An Owner or Primary Owner must first add the connector for the organisation:

  1. Navigate to Organization settings > Connectors.
  2. Click Add.
  3. Hover over Custom, then select Web.
  4. Set any name you want and enter the server URL: https://mcp.g-x.co/mcp
  5. Do not specify any Advanced settings.
  6. Click Add to finish.

Members can then connect:

  1. Navigate to Customize > Connectors.
  2. Find the connector your Owner added (it carries a "Custom" label).
  3. Click Connect and complete the sign-in described above.

Claude Pro and Max plans

  1. Navigate to Customize > Connectors.
  2. Click + then Add custom connector.
  3. Set any name you want and enter the server URL: https://mcp.g-x.co/mcp
  4. Do not specify any Advanced settings.
  5. Click Add, then Connect and complete the sign-in described above.

Enabling the connector in a conversation

Connectors are toggled per conversation. Click the + button at the lower left of the chat interface, then Connectors, and switch the GX connector on or off.

Connecting from Claude Code

# "gx" is the local name for the server — choose any name
claude mcp add --transport http gx https://mcp.g-x.co/mcp

Then authenticate from within Claude Code:

claude /mcp

Run the command shown, then select the GX server and follow the sign-in prompts.

Connecting from ChatGPT

Custom MCP connectors are available on ChatGPT Plus, Pro, Business, Enterprise and Education accounts.

  1. In ChatGPT on the web, go to Settings > Apps (or Settings > Connectors) and enable Developer mode under Advanced settings.
  2. Go to Settings > Connectors and click Add custom connector.
  3. Enter the server URL: https://mcp.g-x.co/mcp
  4. Choose OAuth as the connection mechanism and complete the sign-in described above.

Connecting from Microsoft Copilot

Microsoft 365 Copilot does not support adding MCP connectors directly as an end user. Instead, MCP servers are added to an agent in Microsoft Copilot Studio by someone with maker or admin access:

  1. In Copilot Studio, open (or create) the agent and go to its Tools page.
  2. Click Add a tool > New tool > Model Context Protocol.
  3. Enter the server URL https://mcp.g-x.co/mcp and choose OAuth authentication, then follow the wizard.
  4. Publish the agent to make it available to users in your organisation.

Connecting from Gemini

The consumer Gemini app does not currently support custom MCP connectors. There are two supported routes:

Gemini Enterprise (added by a team admin): go to Settings & help, select your team, then Manage team > Connected apps > Add MCP Server, and enter the server URL https://mcp.g-x.co/mcp.

# Gemini CLI: add to ~/.gemini/settings.json
{
  "mcpServers": {
    "gx": {
      "httpUrl": "https://mcp.g-x.co/mcp"
    }
  }
}

Gemini CLI (individual developers): add the server to ~/.gemini/settings.json as shown (take care to keep the JSON valid), then restart the CLI and complete sign-in when prompted.

Connecting from Other Clients

Any client that supports remote MCP servers with OAuth can connect. Enter the server URL https://mcp.g-x.co/mcp and choose OAuth as the authentication method; the client handles registration and sign-in automatically.

Available Tools

The server exposes the following tools to your assistant. Your assistant chooses which tool to use based on your question — you do not call them directly.

Tool Description
search_catalog Finds products in the GX catalogue — resolves a product name, commodity or trading hub to its GX code(s), and answers listing questions such as "all forward curve products in Europe". Returns product information, not prices.
query_index_db Retrieves published GX index data — prices for one or more GX codes over a date range, with product metadata. Handles both simple lookups and analytical questions.
request_human_assistance Passes your question to the GX team (support, sales or technical) when the assistant cannot answer it — for example account questions, missing data or feedback.
get_server_health Checks that the server and its tools are available. Useful when diagnosing connection problems.

Data Access and Security

MCP Troubleshooting

Problem Likely cause and fix
No verification code arrives Your email address is not enabled for MCP access. Contact GX Support. Check your spam folder first.
Sign-in loops back to the email screen The code expired (15 minutes) or the address is not enabled. Request a new code, or contact GX Support.
Connector added but tools do not appear Reconnect: disconnect the connector in your client, then connect and sign in again.
Assistant returns no data for a product The product may not be in the published catalogue, or the date range may be wrong. Ask the assistant to search the catalogue for the product first.
Assistant reports an error with a request ID Quote the request ID to GX Support — it lets the team look up the full detail.

Submitting Data

Last updated: August 2026

GX accepts data submissions from partners globally.

Source Systems

Where possible, GX has a strong preference for receiving data from formally managed IT systems (e.g. CTRM, confirmation interfaces, Bid/Offer management, nomination and logistics software) which are supported and maintained outside the Front Office. Where this is not possible (for example, with bid/offer data), this should be highlighted.

Submit Data via Email

GX accepts data submissions via a dedicated email address. Email can contain data in the email body as well as attachments. Contact GX Support for a dedicated email address to accept your data submissions.

Submit Data via API

Data is submitted to the GX data lake using the /file endpoint. This is a two-step call — POST the file metadata to https://api.g-x.co/file, then PUT the file content to the location returned.

Full detail, including the request body and the file types accepted, is in Submit Data under the API Specification.

Your API credentials must be permissioned for uploads, and GX Support will provide the groupName your submissions go to. Contact GX Support to arrange both.

Trade Data Format

Last updated: August 2026

General Index processes trade data from a number of sources across commodities and geographies. We have developed a flexible data format that allows accurate and efficient processing

GX assessment processes include both trades and bid/offer data. Our data structure applies to both.

File Format

The following describes the data format which can be used for downloading and uploading trade data as CSV files.

Trade Data Keys

The combination of keys must be unique. Transactions with the same keys will be considered corrections and the previous data will be overwritten.

All keys are required:

Key Type Req. Description Example
Code Text Y GX Trade Series code. GT followed by 7 digits. Codes can be provided by GX Support GT1234567
Reference Integer Y Unique reference assigned to each deal captured per Code / DateTime. Values used to distinguish between trades with a matching timestamp. 1
TransactionType Text Y Options are Bid, Offer, Trade Bid
DateTime(TimeZone) ISO-8601 Y Timeseries datetime. TimeZone must be specified in the CSV header, so for example DateTime(Europe/London), and are from the IANA Time Zone Database 2021-06-15T16:30:00

Columns - Core

Most Core columns are required:

Column Type Req. Description Example
Buyer(S) Text N Buying company. Blank for Offers. Counterparty A
LeadParty(S) Text N Lead party side (market maker). Defined list of Buyer,Seller, or blank (for markets where this is unavailable) Buyer
Seller(S) Text N Selling company. Blank for Bids. Counterparty B
TradingHubDetail(S) Text Y Traded Location. Can match TradingHub (see Metadata), or provide multiple locations depending on data series. NWE
Price(DB) Double Y Outright traded price / differential to floating price 71.75
PricingCurrency(S) Text Y ISO-4217 Currency Code, or USC for US Cents, GBX for GB Sterling pennies USD
PricingType(S) Text Y Defined list of Fixed, COD, Laycan, Balmo, Balmo Next Day, EFP, Custom COD
PricingUnit(S) Text Y Unit of measure used for pricing. TOTAL, DAY or otherwise BBL
Quantity(DB) Double Y Main traded quantity / volume 25
QuantityUnit(S) Text Y Main unit, including period. /TOTAL, /DAY or otherwise BBL/DAY

Columns - Additional

Additional columns that can be accepted:

Column Type Req. Description Example(s)
CODDays(DB) Double N Completion of discharge days 5
DeliveryBasis(S) Text N Trade delivery terms FOB, CIF, Delivered
DeliveryDetails(S) Text N Text description of timing information, e.g. for US pipeline cycle numbers C5 UNR
DeliveryEnd(D) ISO-8601 N End of day on which delivery ends 2021-08-31T23:59:59
DeliveryStart(D) ISO-8601 N Start of day on which delivery starts 2021-08-01T00:00:00
Destination(S) Text N Destination location or port Open
DiffToSwap(DB) Double N Quoted difference to swap value 5
Excluded(S) Text N Market quoted trade excluded by Source associated with the data series. Defined list of Y,N,R N
ExclusionDetails(S) Text N Reason for excluding a market quoted trade. 'Non Standard Terms'
ExtractTime(D) ISO-8601 N Datetime at which data was published from trade capture system 2021-08-01T00:00:00
Grade(S) Text N NULL if not applicable Summer
OCORef(S) Text N Order cancels order reference 1
OrderPlaced(D) ISO-8601 N Datetime at which the order was initially placed 2021-08-01T16:29:59.123
OrderExpiry(D) ISO-8601 N Datetime at which the order expires if not executed 2021-08-01T16:29:59.123
Origin(S) Text N Origin location or port UAE
PriceMax(DB) Double N Maximum price (e.g for Tenders). Blank if not available 75.25
PricePlaced(D) ISO-8601 N Datetime at which the order was initially placed at the final price 2021-08-01T16:29:59.123
PricingDetails(S) Text N Free text description of trade terms MARKET BUYS FROM CPTY 5KMT AT $27.50 (08:28:42) (DEEMED PRICING NOV22)
PricingMarket(S) Text N Text description of market for floating price deals, or Fixed ICE Gasoil, 95 RON GASOLINE MED FOB CARGOES SWAPS, Brent
PricingMarketPct(DB) Double N Percentage of floating price attributed to PricingMarket. Blank if not available 100
PricingPeriod(S) Text N Text description of the pricing period. Dates in YYYY-MM format 2023-05
PricingPeriodDetail(S) Text N Additional text description of the pricing period. Dates in YYYY-MM format D 5
PricingPeriodStart(D) ISO-8601 N Start of first day of pricing period. Blank for fixed price trades. 2021-08-01T00:00:00
PricingPeriodEnd(D) ISO-8601 N Final second of last day of pricing period. Blank for fixed price trades 2021-08-31T23:59:59
PricingMarket2(S) Text N Text description of pricing market 2 for floating price deals, or Fixed ICE Gasoil, 95 RON GASOLINE MED FOB CARGOES SWAPS, Brent
PricingMarket2Pct(DB) Double N Percentage of floating price attributed to Pricing Market 2. Blank if not available 100
PricingPeriod2(S) Text N Text description of pricing period 2. Dates in YYYY-MM format 2023-05
PricingPeriod2Detail(S) Text N Additional text description of pricing period 2. Dates in YYYY-MM format D 5
PricingPeriod2Start(D) ISO-8601 N Start of first day of pricing period 2. Blank for fixed price trades. 2021-08-01T00:00:00
PricingPeriod2End(D) ISO-8601 N Final second of last day of pricing period 2. Blank for fixed price trades 2021-08-31T23:59:59
PricingMarket2Price(DB) Double N Fixed price element associated with pricing market 2 for floating price deals. Blank if not available ' 25.2
PricingMarket3(S) Text N Text description of pricing market 3 for floating price deals, or Fixed ICE Gasoil, 95 RON GASOLINE MED FOB CARGOES SWAPS, Brent
PricingMarket3Pct(DB) Double N Percentage of floating price attributed to Pricing Market 3. Blank if not available 100
PricingPeriod3(S) Text N Text description of the pricing period 3. Dates in YYYY-MM format 2023-05
PricingPeriod3Detail(S) Text N Additional text description of pricing period 3. Dates in YYYY-MM format D 5
PricingPeriod3Start(D) ISO-8601 N Start of first day of pricing period 3. Blank for fixed price trades. 2021-08-01T00:00:00
PricingPeriod3End(D) ISO-8601 N Final second of last day of pricing period 3. Blank for fixed price trades 2021-08-31T23:59:59
PricingMarket3Price(DB) Double N Fixed price element associated with pricing market 3 for floating price deals. Blank if not available ' 25.2
QuantityMax(DB) Double N Maximum quantity tradable as main volume (for Bids / Offers only). Blank if not available 3
SourceDetails(S) Text N Direct provider of the data series. GX
TransactionRef(S) Text N 3rd party identifier where available 123456
TransactionStatus(S) Text N Transaction status. Defined list of BidOffer, ReBidOffer, WithdrawsBidOffer, WithdrawnBidOffer, UnwoundBuySell, Deleted, Traded,Indication WithdrawnBidOffer
TransactionValuation(DB) Double N Valuation of the trade assessed by Source associated with data series 75.45
Vessel(S) Text N Vessel name or type BP, KPC, TOTAL
WindowState(S) Text N Pricing window state at the point the order was placed Pricing
WindowTrade(S) Text N Trade entered into a pricing window platform. Defined list of Y,N N

Columns - Optional volumes

For optional volumes, the following columns are accepted

Column Type Req. Description Example(s)
OptCODDays(DB) Double N Optional. Completion of discharge days 5
OptPrice(DB) Double N Outright traded price / differential to floating price for optional leg 75.15
OptPricingCurrency(S) Text N ISO-4217 Currency Code, or USC for US Cents, GBX for GB Sterling pennies GBX
OptPricingMarket(S) Text N Text description of market for floating price deals, or Fixed ICE Gasoil
OptPricingPeriodEnd(D) ISO-8601 N Final second of last day of optional leg pricing period. Blank for fixed price trades. 2021-08-31T23:59:59
OptPricingPeriodStart(D) ISO-8601 N Start of first day of optional leg pricing period. Blank for fixed price trades. 2021-08-01T00:00:00
OptPricingType(S) Text N Defined list of Fixed, COD,Laycan, Balmo, Balmo Next Day, Custom COD
OptPricingUnit(S) Text N Unit of measure used for pricing, including period. /TOTAL, /DAY or otherwise BBL/TOTAL
OptQuantityUnit(S) Text N Volume unit, including period. /TOTAL, /DAY or otherwise BBL/DAY
OptQuantity(DB) Double N Optional traded quantity / volume 5
QuantityTotal(DB) Double N Total quantity including both Quantity and OptQuantity '30'

Trade Metadata

Metadata must be presented in the CSV after any columns. Metadata applies to the set of keys and cannot vary by DateTime.

Metadata Type Req. Description Example(s)
Commodity(MD-S) Text Y Traded commodity Gasoline
Source(MD-S) Text Y Publisher of the data series GX
TimeZone(MD-S) IANA TimeZone Y Timezone that all date time fields of this data apply to Europe/London
Title(MD-S) Text Y Title of trade data series Naphtha CIF NWE Cargoes 24KT MOC
TradingHub(MD-S) Text Y Traded location NWE
HolidayCalendar(MD-S) Text Y Data series holiday calendar. Null if not applicable Holidays_GX_Europe
EarlyCloseCalendar(MD-S) Text Y Data series early close calendar. Null if not applicable EarlyClose_GX_Europe