REST API
Stableyard provides a comprehensive REST API for all integrations. Use standard HTTP clients in any language.Base URLs
| Environment | Base URL |
|---|---|
| Sandbox | https://sandbox.api.stableyard.fi |
| Production | https://api.stableyard.fi |
Authentication
All requests require thex-sdk-key header:
Copy
curl -X GET https://api.stableyard.fi/sdk/v1/get-user?userId=user_123 \
-H "x-sdk-key: YOUR_API_KEY" \
-H "Content-Type: application/json"
Language Examples
JavaScript / TypeScript
Copy
const API_KEY = process.env.STABLEYARD_API_KEY;
const BASE_URL = 'https://api.stableyard.fi';
// Register a user
async function registerUser(partnerId: string, username: string, addresses: string[]) {
const response = await fetch(`${BASE_URL}/sdk/v1/register`, {
method: 'POST',
headers: {
'x-sdk-key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ partnerId, username, addresses })
});
return response.json();
}
// Get user balance
async function getBalance(userId: string) {
const response = await fetch(`${BASE_URL}/sdk/v1/get-balance`, {
method: 'POST',
headers: {
'x-sdk-key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ userId })
});
return response.json();
}
// Create payment quote
async function createQuote(userId: string, partnerId: string, amount: string, destinationPaymentAddress: string) {
const response = await fetch(`${BASE_URL}/sdk/v1/quote`, {
method: 'POST',
headers: {
'x-sdk-key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ userId, partnerId, amount, destinationPaymentAddress })
});
return response.json();
}
Python
Copy
import requests
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://api.stableyard.fi'
headers = {
'x-sdk-key': API_KEY,
'Content-Type': 'application/json'
}
# Register a user
def register_user(partner_id, username, addresses):
response = requests.post(
f'{BASE_URL}/sdk/v1/register',
headers=headers,
json={
'partnerId': partner_id,
'username': username,
'addresses': addresses
}
)
return response.json()
# Get user balance
def get_balance(user_id):
response = requests.post(
f'{BASE_URL}/sdk/v1/get-balance',
headers=headers,
json={'userId': user_id}
)
return response.json()
# Create payment quote
def create_quote(user_id, partner_id, amount, destination):
response = requests.post(
f'{BASE_URL}/sdk/v1/quote',
headers=headers,
json={
'userId': user_id,
'partnerId': partner_id,
'amount': amount,
'destinationPaymentAddress': destination
}
)
return response.json()
Go
Copy
package main
import (
"bytes"
"encoding/json"
"net/http"
)
const (
apiKey = "YOUR_API_KEY"
baseURL = "https://api.stableyard.fi"
)
func registerUser(partnerId, username string, addresses []string) (map[string]interface{}, error) {
payload, _ := json.Marshal(map[string]interface{}{
"partnerId": partnerId,
"username": username,
"addresses": addresses,
})
req, _ := http.NewRequest("POST", baseURL+"/sdk/v1/register", bytes.NewBuffer(payload))
req.Header.Set("x-sdk-key", apiKey)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
return result, nil
}
Complete Payment Flow Example
Copy
// 1. Register user
const user = await registerUser('your_partner_id', 'alice', ['0x...']);
console.log('User created:', user.data.userId);
// 2. Create vault
const vault = await fetch(`${BASE_URL}/sdk/v1/create-vault`, {
method: 'POST',
headers: { 'x-sdk-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ userId: user.data.userId })
}).then(r => r.json());
console.log('Vault:', vault.data.vaultAddress);
// 3. Get balance
const balance = await getBalance(user.data.userId);
console.log('Balance:', balance.data.balance, 'USDC');
// 4. Create payment quote
const quote = await createQuote(
user.data.userId,
'your_partner_id',
'100.00',
'merchant@stableyard'
);
console.log('Quote:', quote.data.quoteData);
// 5. User signs the quote payload (implement based on your wallet)
const signature = await getUserSignature(quote.data.quoteData.payload);
// 6. Settle payment
const settlement = await fetch(`${BASE_URL}/sdk/v1/settle`, {
method: 'POST',
headers: { 'x-sdk-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
payload: quote.data.quoteData.payload,
signature: signature,
domain: quote.data.domain,
types: quote.data.types
})
}).then(r => r.json());
console.log('Payment settled:', settlement);
API Access
Contact us for API access:- Telegram: @miteshmetha
- Email: mitesh@stableyard.fi
See API Overview for complete endpoint documentation.