QUICKSTART
Quickstart for Arabic-ready, container-based GPU compute
This guide walks you from account setup to workload submission, including model selection for Arabic AI use cases.
DCP job execution runs in GPU-accelerated Docker containers.
Choose your role path
Start from the flow that matches your role. DCP keeps one consistent trust model: Saudi energy advantage, Arabic AI support, and containerized execution.
I am a provider
Register GPU hardware, install daemon, and move to heartbeat-ready.
Start provider onboardingI am integrating API
Use auth and endpoint contracts for production-safe integration.
Open API integration startHow DCP Billing Works
- 1. Before execution, DCP places an estimate hold in halala from your wallet.
- 2. After completion, final cost is settled from actual runtime (not the estimate).
- 3. Any unused hold is returned to wallet balance in halala automatically.
100 halala = 1 SAR.
Current flow: wallet top-up in SAR, estimate hold before execution, completion-based settlement, and automatic return of any unused hold.
Renter onboarding checklist
Get your API key
PrepareRegister a renter account at dcp.sa/renter/register. You'll receive a renter API key — copy it from the dashboard and keep it private.
Top up your balance
FundFund wallet in SAR. Use the dashboard at dcp.sa/renter/billing, or call the API directly:
curl -X POST https://dcp.sa/api/dc1/renters/topup \
-H "x-renter-key: YOUR_RENTER_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_sar": 10}'Response
{
"success": true,
"topped_up_halala": 1000,
"new_balance_halala": 1000
}Browse available GPUs
SelectFetch live providers from the marketplace and note the id for the compatible provider you choose:
curl https://dcp.sa/api/dc1/marketplace
Response
{
"providers": [
{
"id": 42,
"gpu_model": "RTX 4090",
"vram_gb": 24,
"price_llm_halala_per_hr": 1200,
"price_training_halala_per_hr": 1800,
"is_live": true,
"location": "Riyadh"
}
],
"total": 1
}provider.id for your job submit request.Submit a job
SubmitSubmit an LLM job and pass your renter key in the x-renter-key header:
curl -X POST https://dcp.sa/api/dc1/jobs/submit \
-H "x-renter-key: YOUR_RENTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"provider_id": 42,
"job_type": "llm_inference",
"duration_minutes": 10,
"params": {
"model": "meta-llama/Llama-3-8B",
"prompt": "Explain transformers in one paragraph"
}
}'Response
{
"success": true,
"job": {
"job_id": "job-abc123",
"status": "pending",
"cost_halala": 200,
"provider_id": 42
}
}Monitor job status
TrackPoll the job endpoint until status reaches completed, then fetch the output:
# Poll status curl https://dcp.sa/api/dc1/jobs/job-abc123 # Fetch output (returns 202 while running, 200 when completed) curl https://dcp.sa/api/dc1/jobs/job-abc123/output
Response
{
"type": "text",
"response": "Transformers are a neural network architecture...",
"billing": {
"actual_cost_halala": 188,
"refunded_halala": 12
}
}pending → queued → running → completedLogs are available at
GET /api/jobs/:id/logsSDK Quickstarts (Node, Python, CLI)
Use one SDK track at a time and verify key, connectivity, and completion before scaling.
Node.js SDK
Typed renter workflows from backend services.
Install
# Check current SDK package names in /docs/sdk-guides before install
Submit + wait
import { DC1RenterClient } from '<YOUR_DCP_SDK_PACKAGE>'
const client = new DC1RenterClient({
apiKey: process.env.DCP_RENTER_KEY!,
baseUrl: 'https://api.dcp.sa',
})
const job = await client.submitJob({
provider_id: 42,
job_type: 'llm_inference',
duration_minutes: 5,
container_spec: { image_type: 'vllm-serve' },
params: { prompt: 'Explain transformer attention in 2 lines.' },
})
const completedJob = await client.waitForJob(job.job_id, { intervalMs: 3000, timeoutMs: 120000 })
console.log(completedJob.status, completedJob.job_id)Verify connectivity
const me = await client.me() console.log(me.email, me.balance_halala)
Expected: your renter profile JSON with email and balance fields.
Verification checklist
- Confirm your API key starts with dcp-renter-
- Confirm top-up response includes success=true and new_balance_halala
- Capture job_id from submit response before polling status