Skip to content

Fig Markets REST API (1.0)

Below are the available REST API endpoints for Fig Markets REST API

Languages
Servers
Test API

https://api.test.figmarkets.com/v1/

Production API

https://api.figmarkets.com/v1/

Operations

Request

Get a list of the exchange credentials set up on your account.

The exchange API keys themselves are never included in the list; use Get exchange credentials by ID with includeCredentials=true to read one.

Security
BearerAuth and FigSignature and FigTimestamp
curl -i -X GET \
  https://api.test.figmarkets.com/v1/account/exchange-credentials \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'

Responses

List of exchange credentials

Bodyapplication/jsonArray [
credentialsIdinteger(account.credentialsId)

Unique identifier for credentials

aliasstring(account.exchangeCredentialsAlias)

Custom alias/reference for exchange credentials, unique on your account

exchangeIdinteger(account.exchangeId)

Exchange identifier - see Exchanges

Enum1725265
exchangeShortCodestring(account.exchangeShortCode)

Short code for the exchange - see Exchanges

Enum"DBT""BULL""DRV""OKX"
exchangestring(account.exchange)

Exchange name - see Exchanges

networkstring(account.network)

The exchange network the credentials are for. Credentials must match the environment: testnet on the Test API and mainnet on the Production API.

Enum"mainnet""testnet"
isExchangeDefaultboolean(account.isExchangeDefault)

Whether these are your default credentials for their exchange. A default is optional, and at most one set of credentials per exchange is the default.

allowedTokensArray of strings(account.allowedTokens)

The base currencies these credentials may trade, as token symbols. An empty list means the credentials are not restricted and may trade every token.

exchangeAccessobject or null(account.exchangeAccess)

What the exchange last reported for these credentials, each list in the exchange's own vocabulary. null when the exchange has not been asked yet or could not be reached.

blockTradeApprovalboolean(account.blockTradeApproval)

true when the exchange requires each block trade on these credentials to be approved, such as Deribit's block_trade_approval feature. RFQs and RFQ quotes cannot settle on such credentials, so creating an RFQ or quote with them is refused.

Read from exchangeAccess, so it is false for credentials the exchange has not been asked about yet.

]
Response
application/json
[ { "credentialsId": 1, "alias": "DBT-main", "exchangeId": 17, "exchangeShortCode": "DBT", "exchange": "Deribit", "network": "testnet", "isExchangeDefault": true, "allowedTokens": [ … ], "exchangeAccess": { … }, "blockTradeApproval": false } ]

Request

Add a set of exchange credentials to your account.

The credentials are checked with the exchange before they are saved, so they must be valid and for the network of the environment you are calling (testnet on the Test API, mainnet on the Production API).

An API key may add exchange credentials only when the user who created it is a trader admin.

Security
BearerAuth and FigSignature and FigTimestamp
Bodyapplication/jsonrequired

Exchange credentials to add

exchangeIdinteger(account.exchangeId)required

Exchange identifier - see Exchanges

Enum1725265
aliasstring(account.exchangeCredentialsAlias)required

Custom alias/reference for exchange credentials, unique on your account

credentialsDeribit (object) or Bullish (object) or Derive (object) or OKX (object)(account.credentials)required
One of:

Deribit API key (exchangeId 17)

client_idstringrequired

Deribit client ID

Example: "zAtLC8iG"
client_secretstringrequired

Deribit client secret

Example: "CEXYHBPchiNcDEYxaFl7gIhA90gfebnyJ5NEjVmUDiI"
isExchangeDefaultboolean(account.isExchangeDefaultRequest)

Makes these credentials your default for their exchange. Setting it to true clears the default from your other credentials on the same exchange; false removes the default from these credentials. Leave it out of an update to keep the current setting.

allowedTokensArray of strings(account.allowedTokens)

The base currencies these credentials may trade, as token symbols. An empty list means the credentials are not restricted and may trade every token.

curl -i -X POST \
  https://api.test.figmarkets.com/v1/account/exchange-credentials \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
  -d '{
    "exchangeId": 17,
    "alias": "DBT-main",
    "credentials": {
      "client_id": "zAtLC8iG",
      "client_secret": "CEXYHBPchiNcDEYxaFl7gIhA90gfebnyJ5NEjVmUDiI"
    },
    "isExchangeDefault": true,
    "allowedTokens": [
      "BTC",
      "ETH"
    ]
  }'

Responses

The added exchange credentials, without the exchange API key

Bodyapplication/json
credentialsIdinteger(account.credentialsId)

Unique identifier for credentials

aliasstring(account.exchangeCredentialsAlias)

Custom alias/reference for exchange credentials, unique on your account

exchangeIdinteger(account.exchangeId)

Exchange identifier - see Exchanges

Enum1725265
exchangeShortCodestring(account.exchangeShortCode)

Short code for the exchange - see Exchanges

Enum"DBT""BULL""DRV""OKX"
exchangestring(account.exchange)

Exchange name - see Exchanges

networkstring(account.network)

The exchange network the credentials are for. Credentials must match the environment: testnet on the Test API and mainnet on the Production API.

Enum"mainnet""testnet"
isExchangeDefaultboolean(account.isExchangeDefault)

Whether these are your default credentials for their exchange. A default is optional, and at most one set of credentials per exchange is the default.

allowedTokensArray of strings(account.allowedTokens)

The base currencies these credentials may trade, as token symbols. An empty list means the credentials are not restricted and may trade every token.

exchangeAccessobject or null(account.exchangeAccess)

What the exchange last reported for these credentials, each list in the exchange's own vocabulary. null when the exchange has not been asked yet or could not be reached.

blockTradeApprovalboolean(account.blockTradeApproval)

true when the exchange requires each block trade on these credentials to be approved, such as Deribit's block_trade_approval feature. RFQs and RFQ quotes cannot settle on such credentials, so creating an RFQ or quote with them is refused.

Read from exchangeAccess, so it is false for credentials the exchange has not been asked about yet.

Response
application/json
{ "credentialsId": 1, "alias": "DBT-main", "exchangeId": 17, "exchangeShortCode": "DBT", "exchange": "Deribit", "network": "testnet", "isExchangeDefault": true, "allowedTokens": [ "BTC", "ETH" ], "exchangeAccess": { "permissions": [ … ], "features": [ … ], "ipWhitelist": [ … ], "checkedAt": "2026-10-19T09:30:00Z" }, "blockTradeApproval": false }

/account/exchange-credentials/{id}

Request

Get a set of exchange credentials by ID.

The ID is the exchange credentials' credentialsId, from the response of the Get exchange credentials endpoint.

The decrypted exchange API key is included as credentials only when you set includeCredentials=true, which an API key may do only when the user who created it is a trader admin.

Security
BearerAuth and FigSignature and FigTimestamp
Path
idintegerrequired

credentialsId of the exchange credentials to fetch/perform operation on

Example: 57
Query
includeCredentialsboolean

Set to true to include the decrypted exchange API key in the response as credentials. Omitted otherwise. Requires the user who created the API key to be a trader admin.

Default false
Example: includeCredentials=true
curl -i -X GET \
  https://api.test.figmarkets.com/v1/account/exchange-credentials/57 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'

Responses

Exchange credentials details

Bodyapplication/json
credentialsIdinteger(account.credentialsId)

Unique identifier for credentials

aliasstring(account.exchangeCredentialsAlias)

Custom alias/reference for exchange credentials, unique on your account

exchangeIdinteger(account.exchangeId)

Exchange identifier - see Exchanges

Enum1725265
exchangeShortCodestring(account.exchangeShortCode)

Short code for the exchange - see Exchanges

Enum"DBT""BULL""DRV""OKX"
exchangestring(account.exchange)

Exchange name - see Exchanges

networkstring(account.network)

The exchange network the credentials are for. Credentials must match the environment: testnet on the Test API and mainnet on the Production API.

Enum"mainnet""testnet"
isExchangeDefaultboolean(account.isExchangeDefault)

Whether these are your default credentials for their exchange. A default is optional, and at most one set of credentials per exchange is the default.

allowedTokensArray of strings(account.allowedTokens)

The base currencies these credentials may trade, as token symbols. An empty list means the credentials are not restricted and may trade every token.

exchangeAccessobject or null(account.exchangeAccess)

What the exchange last reported for these credentials, each list in the exchange's own vocabulary. null when the exchange has not been asked yet or could not be reached.

blockTradeApprovalboolean(account.blockTradeApproval)

true when the exchange requires each block trade on these credentials to be approved, such as Deribit's block_trade_approval feature. RFQs and RFQ quotes cannot settle on such credentials, so creating an RFQ or quote with them is refused.

Read from exchangeAccess, so it is false for credentials the exchange has not been asked about yet.

credentialsDeribit (object) or Bullish (object) or Derive (object) or OKX (object)

The decrypted exchange API key. Only present when the request sets includeCredentials=true.

One of:

The decrypted exchange API key. Only present when the request sets includeCredentials=true.

Response
application/json
{ "credentialsId": 1, "alias": "DBT-main", "exchangeId": 17, "exchangeShortCode": "DBT", "exchange": "Deribit", "network": "testnet", "isExchangeDefault": true, "allowedTokens": [ "BTC", "ETH" ], "exchangeAccess": { "permissions": [ … ], "features": [ … ], "ipWhitelist": [ … ], "checkedAt": "2026-10-19T09:30:00Z" }, "blockTradeApproval": false, "credentials": { "client_id": "zAtLC8iG", "client_secret": "CEXYHBPchiNcDEYxaFl7gIhA90gfebnyJ5NEjVmUDiI" } }

/account/exchange-credentials/{id}

Request

Change the alias or the exchange API key of a set of exchange credentials.

The credentials are always required and are checked with the exchange again before they are saved. The exchange cannot be changed: exchangeId must be the one the credentials were added for. To change the token restriction use Update exchange credentials allowed tokens.

An API key may change exchange credentials only when the user who created it is a trader admin.

Security
BearerAuth and FigSignature and FigTimestamp
Path
idintegerrequired

credentialsId of the exchange credentials to fetch/perform operation on

Example: 57
Bodyapplication/jsonrequired

Exchange credentials to save

exchangeIdinteger(account.exchangeId)required

Exchange identifier - see Exchanges

Enum1725265
aliasstring(account.exchangeCredentialsAlias)required

Custom alias/reference for exchange credentials, unique on your account

credentialsDeribit (object) or Bullish (object) or Derive (object) or OKX (object)(account.credentials)required
One of:

Deribit API key (exchangeId 17)

client_idstringrequired

Deribit client ID

Example: "zAtLC8iG"
client_secretstringrequired

Deribit client secret

Example: "CEXYHBPchiNcDEYxaFl7gIhA90gfebnyJ5NEjVmUDiI"
isExchangeDefaultboolean(account.isExchangeDefaultRequest)

Makes these credentials your default for their exchange. Setting it to true clears the default from your other credentials on the same exchange; false removes the default from these credentials. Leave it out of an update to keep the current setting.

curl -i -X PUT \
  https://api.test.figmarkets.com/v1/account/exchange-credentials/57 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
  -d '{
    "exchangeId": 17,
    "alias": "DBT-main",
    "credentials": {
      "client_id": "zAtLC8iG",
      "client_secret": "CEXYHBPchiNcDEYxaFl7gIhA90gfebnyJ5NEjVmUDiI"
    },
    "isExchangeDefault": true
  }'

Responses

Exchange credentials updated

Bodyapplication/json
messagestring
Response
application/json
{ "message": "string" }

/account/exchange-credentials/{id}

Request

Delete a set of exchange credentials from your account.

An API key may delete exchange credentials only when the user who created it is a trader admin.

Security
BearerAuth and FigSignature and FigTimestamp
Path
idintegerrequired

credentialsId of the exchange credentials to fetch/perform operation on

Example: 57
curl -i -X DELETE \
  https://api.test.figmarkets.com/v1/account/exchange-credentials/57 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE'

Responses

Exchange credentials deleted

Bodyapplication/json
messagestring
Response
application/json
{ "message": "string" }

/account/exchange-credentials/{id}/allowed-tokens

Request

Replace the list of tokens a set of exchange credentials may trade. Send an empty allowedTokens list to remove the restriction.

An API key may change the restriction only when the user who created it is a trader admin.

Security
BearerAuth and FigSignature and FigTimestamp
Path
idintegerrequired

credentialsId of the exchange credentials to fetch/perform operation on

Example: 57
Bodyapplication/jsonrequired

Tokens the exchange credentials may trade

allowedTokensArray of strings(account.allowedTokens)

The base currencies these credentials may trade, as token symbols. An empty list means the credentials are not restricted and may trade every token.

curl -i -X PUT \
  https://api.test.figmarkets.com/v1/account/exchange-credentials/57/allowed-tokens \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-FIG-Signature: YOUR_API_KEY_HERE' \
  -H 'X-FIG-Timestamp: YOUR_API_KEY_HERE' \
  -d '{
    "allowedTokens": [
      "BTC",
      "ETH"
    ]
  }'

Responses

Token restriction updated

Bodyapplication/json
messagestring
Response
application/json
{ "message": "string" }
Operations
Operations