Claude Fable 5.1
This reference documents the ModelFold gateway. Pricing is shown on the model page: https://modelfold.ai/models/claude-fable-5-1
Endpoint
POST /chat/completions
Full URL: https://modelfold.ai/v1/chat/completions
Authentication: every request must include the
Authorization: Bearer <API_KEY>header.
ModelFold translates this request to the model provider protocol and returns an OpenAI-style completion. Set stream: true for server-sent events. Coding agents and the native protocol use the same model id claude-fable-5-1. See AI Agent.
Request Parameters
Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Allowed values: claude-fable-5-1. Example: claude-fable-5-1. |
messages | array<object> | Yes | minItems: 1. |
messages[].role | string | Yes | Allowed values: system / user / assistant. Example: user. |
messages[].content | string | array<object> | Yes | A string, or an array of {"type":"text","text":"..."} and {"type":"image_url","image_url":{"url":"data:image/png;base64,..."}}. For images, use a data:image base64 URL (png / jpeg / webp / gif). Keep each image under 5MB and send at most 10 images at a time. http(s) image URLs are forwarded as-is. |
max_tokens | integer | No | Default: 1024. Example: 1024. |
temperature | number | No | — |
Request example
bash
curl -X POST "https://modelfold.ai/v1/chat/completions" \
-H "Authorization: Bearer $MODELFOLD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": "In one sentence, why do library call numbers exist?"
}
],
"max_tokens": 80
}'python
import os
from openai import OpenAI
client = OpenAI(base_url="https://modelfold.ai/v1", api_key=os.environ["MODELFOLD_API_KEY"])
resp = client.chat.completions.create(
model="claude-fable-5-1",
messages=[
{
"role": "user",
"content": "In one sentence, why do library call numbers exist?",
},
],
)
print(resp.choices[0].message.content)javascript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://modelfold.ai/v1", apiKey: process.env.MODELFOLD_API_KEY });
const resp = await client.chat.completions.create({
model: "claude-fable-5-1",
messages: [{"role":"user","content":"In one sentence, why do library call numbers exist?"}],
});
console.log(resp.choices[0].message.content);python
import os
import requests
resp = requests.post(
"https://modelfold.ai/v1/chat/completions",
headers={
"Authorization": "Bearer " + os.environ["MODELFOLD_API_KEY"],
"Content-Type": "application/json",
},
json={
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": "In one sentence, why do library call numbers exist?",
},
],
"max_tokens": 80,
},
)
print(resp.json())javascript
const resp = await fetch("https://modelfold.ai/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.MODELFOLD_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": "In one sentence, why do library call numbers exist?"
}
],
"max_tokens": 80
}),
});
console.log(await resp.json());go
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{"model":"claude-fable-5-1","messages":[{"role":"user","content":"In one sentence, why do library call numbers exist?"}],"max_tokens":80}`)
req, _ := http.NewRequest("POST", "https://modelfold.ai/v1/chat/completions", body)
req.Header.Set("Authorization", "Bearer " + os.Getenv("MODELFOLD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = "{\"model\":\"claude-fable-5-1\",\"messages\":[{\"role\":\"user\",\"content\":\"In one sentence, why do library call numbers exist?\"}],\"max_tokens\":80}";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://modelfold.ai/v1/chat/completions"))
.header("Authorization", "Bearer " + System.getenv("MODELFOLD_API_KEY"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> resp = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
}
}php
<?php
$ch = curl_init('https://modelfold.ai/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv("MODELFOLD_API_KEY"),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => '{"model":"claude-fable-5-1","messages":[{"role":"user","content":"In one sentence, why do library call numbers exist?"}],"max_tokens":80}',
]);
echo curl_exec($ch);
curl_close($ch);csharp
using System;
using System.Net.Http;
using System.Text;
var client = new HttpClient();
var req = new HttpRequestMessage(new HttpMethod("POST"), "https://modelfold.ai/v1/chat/completions");
req.Headers.TryAddWithoutValidation("Authorization", "Bearer " + Environment.GetEnvironmentVariable("MODELFOLD_API_KEY"));
req.Content = new StringContent("{\"model\":\"claude-fable-5-1\",\"messages\":[{\"role\":\"user\",\"content\":\"In one sentence, why do library call numbers exist?\"}],\"max_tokens\":80}", Encoding.UTF8, "application/json");
var resp = await client.SendAsync(req);
Console.WriteLine(await resp.Content.ReadAsStringAsync());json
{
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": "In one sentence, why do library call numbers exist?"
}
],
"max_tokens": 80
}Image input
Put the image in the content array as a data URL. Replace BASE64_IMAGE_DATA with the base64 of your image file.
bash
curl -X POST "https://modelfold.ai/v1/chat/completions" \
-H "Authorization: Bearer $MODELFOLD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this image in one sentence."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<BASE64_IMAGE_DATA>"
}
}
]
}
],
"max_tokens": 512
}'python
import os
from openai import OpenAI
client = OpenAI(base_url="https://modelfold.ai/v1", api_key=os.environ["MODELFOLD_API_KEY"])
resp = client.chat.completions.create(
model="claude-fable-5-1",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this image in one sentence.",
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<BASE64_IMAGE_DATA>",
},
},
],
},
],
)
print(resp.choices[0].message.content)javascript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://modelfold.ai/v1", apiKey: process.env.MODELFOLD_API_KEY });
const resp = await client.chat.completions.create({
model: "claude-fable-5-1",
messages: [{"role":"user","content":[{"type":"text","text":"Describe this image in one sentence."},{"type":"image_url","image_url":{"url":"data:image/png;base64,<BASE64_IMAGE_DATA>"}}]}],
});
console.log(resp.choices[0].message.content);python
import os
import requests
resp = requests.post(
"https://modelfold.ai/v1/chat/completions",
headers={
"Authorization": "Bearer " + os.environ["MODELFOLD_API_KEY"],
"Content-Type": "application/json",
},
json={
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this image in one sentence.",
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<BASE64_IMAGE_DATA>",
},
},
],
},
],
"max_tokens": 512,
},
)
print(resp.json())javascript
const resp = await fetch("https://modelfold.ai/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.MODELFOLD_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "claude-fable-5-1",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe this image in one sentence."
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,<BASE64_IMAGE_DATA>"
}
}
]
}
],
"max_tokens": 512
}),
});
console.log(await resp.json());go
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{"model":"claude-fable-5-1","messages":[{"role":"user","content":[{"type":"text","text":"Describe this image in one sentence."},{"type":"image_url","image_url":{"url":"data:image/png;base64,<BASE64_IMAGE_DATA>"}}]}],"max_tokens":512}`)
req, _ := http.NewRequest("POST", "https://modelfold.ai/v1/chat/completions", body)
req.Header.Set("Authorization", "Bearer " + os.Getenv("MODELFOLD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = "{\"model\":\"claude-fable-5-1\",\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Describe this image in one sentence.\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,<BASE64_IMAGE_DATA>\"}}]}],\"max_tokens\":512}";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://modelfold.ai/v1/chat/completions"))
.header("Authorization", "Bearer " + System.getenv("MODELFOLD_API_KEY"))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> resp = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
}
}php
<?php
$ch = curl_init('https://modelfold.ai/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv("MODELFOLD_API_KEY"),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => '{"model":"claude-fable-5-1","messages":[{"role":"user","content":[{"type":"text","text":"Describe this image in one sentence."},{"type":"image_url","image_url":{"url":"data:image/png;base64,<BASE64_IMAGE_DATA>"}}]}],"max_tokens":512}',
]);
echo curl_exec($ch);
curl_close($ch);csharp
using System;
using System.Net.Http;
using System.Text;
var client = new HttpClient();
var req = new HttpRequestMessage(new HttpMethod("POST"), "https://modelfold.ai/v1/chat/completions");
req.Headers.TryAddWithoutValidation("Authorization", "Bearer " + Environment.GetEnvironmentVariable("MODELFOLD_API_KEY"));
req.Content = new StringContent("{\"model\":\"claude-fable-5-1\",\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Describe this image in one sentence.\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,<BASE64_IMAGE_DATA>\"}}]}],\"max_tokens\":512}", Encoding.UTF8, "application/json");
var resp = await client.SendAsync(req);
Console.WriteLine(await resp.Content.ReadAsStringAsync());Response
200 — completion finished; usage reports the request size.
json
{
"ok": true,
"object": "chat.completion",
"model": "claude-fable-5-1",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Library call numbers exist to give each item a unique address that both groups it on the shelf with related materials and lets anyone locate it quickly and consistently."
},
"finish_reason": "stop"
}
],
"usage": {}
}