Developers
Call Claude, GPT and Gemini from PHP
PHP can call Somnus with the built-in cURL extension and json_encode — useful for WordPress plugins and Laravel apps.
Install
bash
(no install — ext-curl)Basic request
php
<?php
$ch = curl_init("https://gateway-production-c837.up.railway.app/v1/chat/completions");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("SOMNUS_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => '{
"model": "claude-sonnet-5",
"messages": [
{"role": "user", "content": "Explain recursion in one sentence."}
]
}',
]);
$data = json_decode(curl_exec($ch), true);
echo $data["choices"][0]["message"]["content"];Streaming
php
<?php
$ch = curl_init("https://gateway-production-c837.up.railway.app/v1/chat/completions");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("SOMNUS_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => '{
"model": "claude-sonnet-5",
"messages": [
{"role": "system", "content": "You are a friendly, concise assistant."},
{"role": "user", "content": "Write a haiku about the sea."}
],
"stream": true
}',
]);
$data = json_decode(curl_exec($ch), true);
echo $data["choices"][0]["message"]["content"];JSON output
php
<?php
$ch = curl_init("https://gateway-production-c837.up.railway.app/v1/chat/completions");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("SOMNUS_API_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => '{
"model": "claude-sonnet-5",
"messages": [
{"role": "system", "content": "Reply only with JSON."},
{"role": "user", "content": "Return {\"city\": ..., \"country\": ...} for the Eiffel Tower."}
],
"response_format": {"type": "json_object"}
}',
]);
$data = json_decode(curl_exec($ch), true);
echo $data["choices"][0]["message"]["content"];PHP notes
- Store the key in your .env file, not in code.
- Set CURLOPT_TIMEOUT so slow replies don't hang requests.
- In Laravel, the Http facade works the same way.
Questions
Which models can I use?
Any of the 50+ models on Somnus — change the model string. The examples use claude-sonnet-5.
Where do I get a key?
Create an account, and your key appears in the dashboard with $5 of free credit.
Run this code with free credit
Create an account and get $5 of free API credit — enough to try every example on this page.
Get $5 free creditRelated
Browse more: Alternatives · Compare · Use cases · Developers · Solutions · Tools