GPT-6 Luna
curl --request POST \
--url https://api.snapgen.org/v1/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"messages": [
{}
],
"max_completion_tokens": 123,
"reasoning_effort": "<string>"
}
'import requests
url = "https://api.snapgen.org/v1/chat/completions"
payload = {
"model": "<string>",
"messages": [{}],
"max_completion_tokens": 123,
"reasoning_effort": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
messages: [{}],
max_completion_tokens: 123,
reasoning_effort: '<string>'
})
};
fetch('https://api.snapgen.org/v1/chat/completions', 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://api.snapgen.org/v1/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'messages' => [
[
]
],
'max_completion_tokens' => 123,
'reasoning_effort' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snapgen.org/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.snapgen.org/v1/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snapgen.org/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyGPT-6
GPT-6 Luna
Call gpt-6-luna through SnapGen using Chat Completions or Responses.
POST
/
v1
/
chat
/
completions
GPT-6 Luna
curl --request POST \
--url https://api.snapgen.org/v1/chat/completions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"messages": [
{}
],
"max_completion_tokens": 123,
"reasoning_effort": "<string>"
}
'import requests
url = "https://api.snapgen.org/v1/chat/completions"
payload = {
"model": "<string>",
"messages": [{}],
"max_completion_tokens": 123,
"reasoning_effort": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
messages: [{}],
max_completion_tokens: 123,
reasoning_effort: '<string>'
})
};
fetch('https://api.snapgen.org/v1/chat/completions', 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://api.snapgen.org/v1/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'messages' => [
[
]
],
'max_completion_tokens' => 123,
'reasoning_effort' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.snapgen.org/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.snapgen.org/v1/chat/completions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snapgen.org/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"max_completion_tokens\": 123,\n \"reasoning_effort\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodygpt-6-luna is available through SnapGen’s OpenAI-compatible text endpoints.
It is a cost-efficient GPT-6 tier for chat, short tasks, and lightweight agents. Use the exact model ID with your SnapGen API key.
Pricing and protocols
| Property | Value |
|---|---|
| Model ID | gpt-6-luna |
| Pricing | Live GPT-6 prices |
| Chat Completions | POST /v1/chat/completions |
| Responses | POST /v1/responses |
| Streaming | Supported with stream: true |
| Tools | Function tools in the selected protocol’s format |
| Long context | Prompts over 272,000 tokens use the model’s long-context rate |
string
required
Set to
gpt-6-luna.array
required
Ordered messages for Chat Completions. Use
input for Responses instead.integer
Caps generated tokens, including reasoning, for Chat Completions.
max_tokens
is a compatibility alias; max_completion_tokens wins if both are sent.
Responses uses max_output_tokens instead.string
Sets reasoning effort for Chat Completions, for example
medium. Responses
uses reasoning: { "effort": "medium" } instead. Supported levels vary by model.Chat Completions request
curl https://api.snapgen.org/v1/chat/completions \
-H "Authorization: Bearer $SNAPGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"messages": [{"role": "user", "content": "Summarize this design decision in three bullets."}],
"reasoning_effort": "medium",
"max_completion_tokens": 2048
}'
choices[0].message.content. Set stream: true to
receive SSE chunks; add stream_options: { "include_usage": true } to request
streamed usage. See Chat Completions for
function tools and response fields.
Responses request
curl https://api.snapgen.org/v1/responses \
-H "Authorization: Bearer $SNAPGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-luna",
"input": "List three risks in this rollout plan.",
"reasoning": {"effort": "medium"},
"max_output_tokens": 2048
}'
output[].content[] items whose type is output_text, or use the SDK
output_text helper. See Responses for streaming and
tool calls.
SnapGen forwards each protocol to routes that serve it natively. Use
GET /v1/models to confirm availability for your
key. The unsuffixed IDs gpt-6 and gpt-6.1 are not substitutes for these tier IDs.