curl --request POST \
--url https://recoup-api.vercel.app/api/chat/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "<string>",
"messages": [
{
"id": "<string>",
"content": "<string>"
}
],
"artistId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "openai/gpt-5-mini",
"excludeTools": [
"create_scheduled_actions"
],
"roomId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://recoup-api.vercel.app/api/chat/generate"
payload = {
"prompt": "<string>",
"messages": [
{
"id": "<string>",
"content": "<string>"
}
],
"artistId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "openai/gpt-5-mini",
"excludeTools": ["create_scheduled_actions"],
"roomId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
messages: [{id: '<string>', content: '<string>'}],
artistId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
model: 'openai/gpt-5-mini',
excludeTools: ['create_scheduled_actions'],
roomId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://recoup-api.vercel.app/api/chat/generate', 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://recoup-api.vercel.app/api/chat/generate",
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([
'prompt' => '<string>',
'messages' => [
[
'id' => '<string>',
'content' => '<string>'
]
],
'artistId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'model' => 'openai/gpt-5-mini',
'excludeTools' => [
'create_scheduled_actions'
],
'roomId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://recoup-api.vercel.app/api/chat/generate"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://recoup-api.vercel.app/api/chat/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://recoup-api.vercel.app/api/chat/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"text": [
{
"text": "<string>"
}
],
"reasoningText": "<string>",
"sources": [
{}
],
"finishReason": "stop",
"usage": {
"inputTokens": 123,
"outputTokens": 123,
"totalTokens": 123,
"reasoningTokens": 123,
"cachedInputTokens": 123
},
"response": {
"messages": [
{}
],
"headers": {},
"body": {}
}
}{
"status": "error",
"message": "<string>"
}Generate Chat
Generate AI-powered text responses using the Recoup chat system. This endpoint processes chat requests and returns generated text along with metadata about the generation process.
curl --request POST \
--url https://recoup-api.vercel.app/api/chat/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "<string>",
"messages": [
{
"id": "<string>",
"content": "<string>"
}
],
"artistId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "openai/gpt-5-mini",
"excludeTools": [
"create_scheduled_actions"
],
"roomId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://recoup-api.vercel.app/api/chat/generate"
payload = {
"prompt": "<string>",
"messages": [
{
"id": "<string>",
"content": "<string>"
}
],
"artistId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"model": "openai/gpt-5-mini",
"excludeTools": ["create_scheduled_actions"],
"roomId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
messages: [{id: '<string>', content: '<string>'}],
artistId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
model: 'openai/gpt-5-mini',
excludeTools: ['create_scheduled_actions'],
roomId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://recoup-api.vercel.app/api/chat/generate', 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://recoup-api.vercel.app/api/chat/generate",
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([
'prompt' => '<string>',
'messages' => [
[
'id' => '<string>',
'content' => '<string>'
]
],
'artistId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'model' => 'openai/gpt-5-mini',
'excludeTools' => [
'create_scheduled_actions'
],
'roomId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://recoup-api.vercel.app/api/chat/generate"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://recoup-api.vercel.app/api/chat/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://recoup-api.vercel.app/api/chat/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"messages\": [\n {\n \"id\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"artistId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"model\": \"openai/gpt-5-mini\",\n \"excludeTools\": [\n \"create_scheduled_actions\"\n ],\n \"roomId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"text": [
{
"text": "<string>"
}
],
"reasoningText": "<string>",
"sources": [
{}
],
"finishReason": "stop",
"usage": {
"inputTokens": 123,
"outputTokens": 123,
"totalTokens": 123,
"reasoningTokens": 123,
"cachedInputTokens": 123
},
"response": {
"messages": [
{}
],
"headers": {},
"body": {}
}
}{
"status": "error",
"message": "<string>"
}Authorizations
Your Recoup API key. Learn more.
Body
Chat generation request
Request body for chat generation. Exactly one of 'prompt' or 'messages' must be provided.
Single text prompt for the assistant. Required if 'messages' is not provided.
Array of UIMessage objects for context. Required if 'prompt' is not provided.
Show child attributes
Show child attributes
The unique identifier of the artist (optional)
The AI model to use for text generation (optional)
"openai/gpt-5-mini"
Array of tool names to exclude from execution
["create_scheduled_actions"]
UUID of the chat room. If not provided, one will be generated automatically.
Response
Chat generated successfully
Response from the chat generation endpoint
Array of content parts from the AI model response
Show child attributes
Show child attributes
Optional reasoning or explanation for the response
Optional array of sources used for the response
The reason why the generation finished
"stop"
Token usage information
Show child attributes
Show child attributes
Additional response metadata
Show child attributes
Show child attributes
