Providers
curl --request GET \
--url https://pearl.computer/v1/inference/providersimport requests
url = "https://pearl.computer/v1/inference/providers"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://pearl.computer/v1/inference/providers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pearl.computer/v1/inference/providers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pearl.computer/v1/inference/providers"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pearl.computer/v1/inference/providers")
.asString();require 'uri'
require 'net/http'
url = URI("https://pearl.computer/v1/inference/providers")
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{
"data": [
{
"id": "dolphin",
"label": "Dolphin",
"kind": "free",
"payment": "none",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": false,
"topup": false
}
},
{
"id": "surplus",
"label": "Surplus Intelligence",
"kind": "prepaid",
"payment": "x402",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": true,
"topup": true
},
"settlement": {
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6
},
"topup": {
"gatewayUrl": "https://api-antseed.mrdn.finance",
"merchant": "surplus",
"settlementChainId": 8453
}
}
]
}
Inference
Providers
Discover inference provider capabilities, settlement, and top-up routes
GET
/
v1
/
inference
/
providers
Providers
curl --request GET \
--url https://pearl.computer/v1/inference/providersimport requests
url = "https://pearl.computer/v1/inference/providers"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://pearl.computer/v1/inference/providers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pearl.computer/v1/inference/providers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pearl.computer/v1/inference/providers"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pearl.computer/v1/inference/providers")
.asString();require 'uri'
require 'net/http'
url = URI("https://pearl.computer/v1/inference/providers")
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{
"data": [
{
"id": "dolphin",
"label": "Dolphin",
"kind": "free",
"payment": "none",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": false,
"topup": false
}
},
{
"id": "surplus",
"label": "Surplus Intelligence",
"kind": "prepaid",
"payment": "x402",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": true,
"topup": true
},
"settlement": {
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6
},
"topup": {
"gatewayUrl": "https://api-antseed.mrdn.finance",
"merchant": "surplus",
"settlementChainId": 8453
}
}
]
}
Returns the configured provider registry. Clients should use capability and
status fields instead of constructing upstream URLs or payment recipients.
Public model ids are namespaced as
Providers
| Provider | Website | Kind | Payment |
|---|---|---|---|
dolphin | dphn.ai/models | free | none |
surplus | surplusintelligence.ai | prepaid | x402 |
provider/upstream-model-id (for example
surplus/zai-org/glm-4.5). Unprefixed ids remain Dolphin for backward
compatibility.
Always prefer this endpoint over hardcoding the table — availability and
settlement details can change.
Response
array
Provider descriptors.
Show properties
Show properties
string
Stable lowercase provider id used as the public model prefix, such as
surplus or dolphin.string
Human-readable provider name.
string
Billing model:
free or prepaid.string
available or funding_only.string
Provider chat payment kind.
object
Boolean chat, models, balance, and top-up support.
object
Optional CAIP-2 network, asset, and decimals.
object
Optional gateway URL, merchant id, and settlement chain.
{
"data": [
{
"id": "dolphin",
"label": "Dolphin",
"kind": "free",
"payment": "none",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": false,
"topup": false
}
},
{
"id": "surplus",
"label": "Surplus Intelligence",
"kind": "prepaid",
"payment": "x402",
"status": "available",
"capabilities": {
"chat": true,
"models": true,
"balance": true,
"topup": true
},
"settlement": {
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"decimals": 6
},
"topup": {
"gatewayUrl": "https://api-antseed.mrdn.finance",
"merchant": "surplus",
"settlementChainId": 8453
}
}
]
}
Response
200
Provider registry