> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.paradex.trade/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.paradex.trade/_mcp/server.

# Get system config

GET https://api.prod.paradex.trade/v1/system/config

Get clearing and settlement layer config for Paradex


Reference: https://docs.paradex.trade/api/prod/system/get-config

## Response

### 200

OK

- `assets_limit_per_account` (integer, optional) — Maximum number of token or synthetic positions allowed per account
- `block_explorer_url` (string, optional) — Block explorer URL for the current SN Instance
- `bridged_tokens` (list of responses.BridgedToken, optional) — bridged tokens config https://github.com/starknet-io/starknet-addresses/blob/master/bridged_tokens/goerli.json
- `dime_staking_contract_address` (string, optional) — DIME Staking contract address
- `environment` (string, optional) — Environment of the Paradex Instance
- `l1_chain_id` (string, optional) — L1 chain ID value
- `l1_core_contract_address` (string, optional) — Address of Starknet L1 core contract
- `l1_operator_address` (string, optional) — Address of Starknet L1 operator
- `l1_relayer_address` (string, optional) — Address of L1 Relayer
- `l2_relayer_address` (string, optional) — Address of L2 Relayer
- `liquidation_fee` (string, optional) — Liquidation fee
- `oracle_address` (string, optional) — Oracle contract address
- `paraclear_account_hash` (string, optional) — Class hash of the account contract
- `paraclear_account_proxy_hash` (string, optional) — Proxy hash of the account contract
- `paraclear_address` (string, optional) — Paraclear contract address
- `paraclear_decimals` (integer, optional)
- `paraclear_evm_account_hash` (string, optional) — Class hash of the EVM (secp256k1) account contract
- `partial_liquidation_buffer` (string, optional) — Partial liquidation buffer. Account value is supposed to be at least this much above the MMR after partial liquidation
- `partial_liquidation_share_increment` (string, optional) — Minimum granularity of partial liquidation share. The share is rounded up to the nearest multiple of this value
- `rfq_default_max_slippage` (string, optional) — The exchange-wide fallback bound an unpriced RFQ's margin is computed from, as a fraction of the underlying spot notional, for an asset that carries no bound of its own. Per-asset bounds are on /system/margin-config, already resolved. It does not bound the execution: a quote wider than it is executable, and is charged what it actually costs. The price bands are what bound the trade.
- `starknet_chain_id` (string, optional) — Chain ID for the Starknet Instance
- `starknet_fullnode_rpc_base_url` (string, optional) — Full node RPC Proxy base URL for Starknet
- `starknet_fullnode_rpc_url` (string, optional) — Full node RPC Proxy URL for Starknet
- `starknet_gateway_url` (string, optional) — This field is deprecated
- `universal_deployer_address` (string, optional) — Universal deployer address

## Types

### responses.BridgedToken

- `decimals` (integer, optional)
- `l1_bridge_address` (string, optional)
- `l1_token_address` (string, optional)
- `l2_bridge_address` (string, optional)
- `l2_token_address` (string, optional)
- `name` (string, optional)
- `symbol` (string, optional)

## Examples

**Response**

```json
{
  "assets_limit_per_account": 550,
  "block_explorer_url": "https://voyager.testnet.paradex.trade/",
  "bridged_tokens": [
    {
      "decimals": 1,
      "l1_bridge_address": "string",
      "l1_token_address": "string",
      "l2_bridge_address": "string",
      "l2_token_address": "string",
      "name": "string",
      "symbol": "string"
    }
  ],
  "dime_staking_contract_address": "string",
  "environment": "local",
  "l1_chain_id": "5",
  "l1_core_contract_address": "0x182FE62c57461d4c5Ab1aE6F04f1D51aA1607daf",
  "l1_operator_address": "0x63e762538C70442758Fd622116d817761c94FD6A",
  "l1_relayer_address": "0x63e762538C70442758Fd622116d817761c94FD6A",
  "l2_relayer_address": "0x63e762538C70442758Fd622116d817761c94FD6A",
  "liquidation_fee": "0.20",
  "oracle_address": "0x47c622ce5f7ff7fa17725df596f4f506364e49be0621eb142a75b44ee3689c6",
  "paraclear_account_hash": "0x033434ad846cdd5f23eb73ff09fe6fddd568284a0fb7d1be20ee482f044dabe2",
  "paraclear_account_proxy_hash": "0x3530cc4759d78042f1b543bf797f5f3d647cde0388c33734cf91b7f7b9314a9",
  "paraclear_address": "0x4638e3041366aa71720be63e32e53e1223316c7f0d56f7aa617542ed1e7554d",
  "paraclear_decimals": 1,
  "paraclear_evm_account_hash": "string",
  "partial_liquidation_buffer": "0.2",
  "partial_liquidation_share_increment": "0.05",
  "rfq_default_max_slippage": "0.0005",
  "starknet_chain_id": "SN_CHAIN_ID",
  "starknet_fullnode_rpc_base_url": "https://rpc.api.testnet.paradex.trade",
  "starknet_fullnode_rpc_url": "https://rpc.api.testnet.paradex.trade/rpc/v0_10",
  "starknet_gateway_url": "string",
  "universal_deployer_address": "0x1f3f9d3f1f0b7f3f9f3f9f3f9f3f9f3f9f3f9f3f"
}
```

**SDK Code**

```python
import requests
headers = {
  'Accept': 'application/json'
}

r = requests.get('https://api.prod.paradex.trade/v1/system/config', headers = headers)

print(r.json())

```

```javascript
const headers = {
  'Accept':'application/json'
};

fetch('https://api.prod.paradex.trade/v1/system/config',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

```

```go
package main
import (
      "bytes"
      "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"}
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api.prod.paradex.trade/v1/system/config", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.prod.paradex.trade/v1/system/config")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.prod.paradex.trade/v1/system/config")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.prod.paradex.trade/v1/system/config');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.prod.paradex.trade/v1/system/config");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://api.prod.paradex.trade/v1/system/config")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```