API Documentation
Complete reference for the RackList product sync API
Authentication
All API requests require an Authorization header with your API key as a Bearer token. API keys start with the rk_ prefix.
Authorization: Bearer YOUR_API_KEY
Key format: rk_ followed by 64 hex characters (67 characters total)
Endpoint
POST
/api/v1/sync/products
Syncs products from your billing system to your RackList listing. Sends an array of products that will be created, updated or deactivated.
Required Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer rk_... | Yes |
Content-Type | application/json | Yes |
Rate Limits
1 request per 5 minutes per host (sliding window)
Payload Schema
The JSON payload must contain a products array with the following fields for each product:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Product name |
external_id | string | Yes | Unique identifier in your billing system |
category | string | Yes | Product category (e.g. vps_cloud, game_minecraft) |
price | float | No | Monthly price |
currency | string | No | Currency (ISO 4217, e.g. EUR, USD) |
description | string | No | Product description |
specs | object | No | Technical specifications (key-value) |
pricing_tiers | array | No | Pricing tiers (period + price) |
setup_fee | float | No | Setup fee |
contract_duration | string | No | Contract duration |
features | array | No | List of included features |
datacenter_locations | array | No | Datacenter locations |
external_url | string | No | Link to the offer, an http(s) address of at most 500 characters. Otherwise the row alone is rejected: it is listed in the response "products_rejected" and "rejected" fields, the other products are saved. |
Payload Example
{
"products": [
{
"name": "VPS Cloud S",
"external_id": "prod_123",
"category": "vps_cloud",
"price": 4.99,
"currency": "EUR",
"description": "1 vCPU, 2GB RAM, 20GB SSD",
"specs": {
"cpu": "1 vCPU",
"ram": "2 GB",
"storage": "20 GB SSD"
},
"pricing_tiers": [
{"period": "monthly", "price": 4.99},
{"period": "yearly", "price": 49.90}
],
"features": ["DDoS Protection", "IPv6"],
"datacenter_locations": ["Paris", "Frankfurt"]
}
]
}
Error Codes
| Code | Description | Error Code |
|---|---|---|
| 401 | Invalid or missing API key | UNAUTHORIZED |
| 403 | API key revoked or inactive | KEY_REVOKED |
| 422 | Invalid payload - validation errors | VALIDATION_FAILED |
| 429 | Too many requests - rate limit exceeded | RATE_LIMITED |
| 500 | Internal server error | INTERNAL_ERROR |
Test Your API Key
Use this cURL command to test your integration:
curl -X POST https://racklist.eu/api/v1/sync/products \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"products": [{"name": "Test Product", "external_id": "test_1", "category": "vps_cloud"}]}'
Replace YOUR_API_KEY with your API key to test.