The cost of the task can be calculated on the Pricing page.
Live ChatGPT LLM Responses
Live ChatGPT LLM Responses endpoint allows you to retrieve structured responses from a specific ChatGPT AI model, based on the input parameters.
Live ChatGPT LLM Responses endpoint allows you to retrieve structured responses from a specific ChatGPT AI model, based on the input parameters.
The cost of the task can be calculated on the Pricing page.
All POST data should be sent in the JSON format (UTF-8 encoding). The task setting is done using the POST method. When setting a task, you should send all task parameters in the task array of the generic POST array. You can send up to 2000 API calls per minute, each Live ChatGPT LLM Responses call can contain only one task.
The number of concurrent Live tasks is currently limited to 30 per account for each platform in the LLM Responses.
Execution time for tasks set with the Live ChatGPT LLM Responses endpoint is currently up to 120 seconds.
Below you will find a detailed description of the fields you can use for setting a task.
Description of the fields for setting a task:
| Field name | Type | Description |
|---|---|---|
user_prompt | string | prompt for the AI model |
model_name | string | name of the AI model |
max_output_tokens | integer | maximum number of tokens in the AI response |
temperature | float | randomness of the AI response |
top_p | float | diversity of the AI response Note: |
web_search | boolean | enable web search |
force_web_search | boolean | force AI agent to use web search |
web_search_country_iso_code | string | ISO country code of the location |
web_search_city | string | city name of the location |
system_message | string | instructions for the AI behaviour |
message_chain | array | conversation history |
tag | string | user-defined task identifier |
tasks array with the information specific to the set tasks.| Field name | Type | Description |
|---|---|---|
version | string | the current version of the API |
status_code | integer | general status code |
status_message | string | general informational message |
time | string | execution time, seconds |
cost | float | total tasks cost, USD |
tasks_count | integer | the number of tasks in the |
tasks_error | integer | the number of tasks in the |
tasks | array | array of tasks |
id | string | task identifier |
status_code | integer | status code of the task |
status_message | string | informational message of the task |
time | string | execution time, seconds |
cost | float | cost of the task, USD |
result_count | integer | number of elements in the |
path | array | URL path |
data | object | contains the same parameters that you specified in the POST request |
result | array | array of results |
model_name | string | name of the AI model used |
input_tokens | integer | number of tokens in the input |
output_tokens | integer | number of tokens in the output |
reasoning_tokens | integer | number of reasoning tokens |
web_search | boolean | indicates if web search was used |
money_spent | float | cost of AI tokens, USD |
datetime | string | date and time when the result was received |
items | array | array of response items |
reasoning | object | element in the response |
type | string | type of the element = 'reasoning' |
sections | array | reasoning chain sections |
type | string | type of element='summary_text' |
text | string | text of the reasoning chain section |
message | object | element in the response |
type | string | type of the element = 'message' |
sections | array | array of content sections |
type | string | type of element='text' |
text | string | AI-generated text content |
annotations | array | array of references used to generate the response |
title | string | the domain name or title of the quoted source |
url | string | URL of the quoted source |
start_index | integer | start of the annotation indexing |
end_index | integer | end of the annotation indexing |
text | string | annotated part of the quoted source |
fan_out_queries | array | array of fan-out queries |
Instead of ‘login’ and ‘password’ use your credentials from https://app.dataforseo.com/api-access
# Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
login="login"
password="password"
cred="$(printf ${login}:${password} | base64)"
curl --location --request POST "https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live"
--header "Authorization: Basic ${cred}"
--header "Content-Type: application/json"
--data-raw '[
{
"system_message": "communicate as if we are in a business meeting",
"message_chain": [
{
"role": "user",
"message": "Hello, what’s up?"
},
{
"role": "ai",
"message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?"
}
],
"max_output_tokens": 200,
"temperature": 0.3,
"top_p": 0.5,
"model_name": "gpt-4.1-mini",
"web_search": true,
"web_search_country_iso_code": "FR",
"web_search_city": "Paris",
"user_prompt": "provide information on how relevant the amusement park business is in France now"
}
]'<?php
// You can download this file from here https://cdn.dataforseo.com/v3/examples/php/php_RestClient.zip
require('RestClient.php');
$api_url = 'https://api.dataforseo.com/';
try {
// Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
$client = new RestClient($api_url, null, 'login', 'password');
} catch (RestClientException $e) {
echo "n";
print "HTTP code: {$e->getHttpCode()}n";
print "Error code: {$e->getCode()}n";
print "Message: {$e->getMessage()}n";
print $e->getTraceAsString();
echo "n";
exit();
}
$post_array = array();
// You can set only one task at a time
$post_array[] = array(
"system_message" => "communicate as if we are in a business meeting",
"message_chain" => [
[
"role" => "user",
"message" => "Hello, what’s up?"
],
[
"role" => "ai",
"message" => "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?"
]
],
"max_output_tokens" => 200,
"temperature" => 0.3,
"top_p" => 0.5,
"model_name" => "gpt-4.1-mini",
"web_search" => true,
"web_search_country_iso_code" => "FR",
"web_search_city" => "Paris",
"user_prompt" => "provide information on how relevant the amusement park business is in France now"
);
if (count($post_array) > 0) {
try {
// POST /v3/serp/google/ai_mode/live/advanced
// in addition to 'google' and 'ai_mode' you can also set other search engine and type parameters
// the full list of possible parameters is available in documentation
$result = $client->post('/v3/ai_optimization/chat_gpt/llm_responses/live', $post_array);
print_r($result);
// do something with post result
} catch (RestClientException $e) {
echo "n";
print "HTTP code: {$e->getHttpCode()}n";
print "Error code: {$e->getCode()}n";
print "Message: {$e->getMessage()}n";
print $e->getTraceAsString();
echo "n";
}
$client = null;
?>const axios = require('axios');
axios({
method: 'post',
url: 'https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live',
auth: {
username: 'login',
password: 'password'
},
data: [{
system_message: encodeURI("communicate as if we are in a business meeting"),
message_chain: [
{
role: "user",
message: "Hello, what’s up?"
},
{
role: "ai",
message: encodeURI("Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?")
}
],
max_output_tokens: 200,
temperature: 0.3,
top_p: 0.5,
model_name: "gpt-4.1-mini",
web_search: true,
web_search_country_iso_code: "FR",
web_search_city: "Paris",
user_prompt: encodeURI("provide information on how relevant the amusement park business is in France now")
}],
headers: {
'content-type': 'application/json'
}
}).then(function (response) {
var result = response['data']['tasks'];
// Result data
console.log(result);
}).catch(function (error) {
console.log(error);
});"""
Method: POST
Endpoint: https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live
@see https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live
"""
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../../../')))
from lib.client import RestClient
from lib.config import username, password
client = RestClient(username, password)
post_data = []
post_data.append({
'system_message': 'communicate as if we are in a business meeting',
'message_chain': [
{
'role': 'user',
'message': 'Hello, what's up?'
},
{
'role': 'ai',
'message': 'Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?'
}
],
'max_output_tokens': 200,
'web_search_country_iso_code': 'FR',
'web_search_city': 'Paris',
'model_name': 'gpt-4o',
'web_search': True,
'user_prompt': 'provide information on how relevant the amusement park business is in France now'
})
try:
response = client.post('/v3/ai_optimization/chat_gpt/llm_responses/live', post_data)
print(response)
# do something with post result
except Exception as e:
print(f'An error occurred: {e}')using System;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Collections.Generic;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace DataForSeoSdk;
public class AiOptimization
{
private static readonly HttpClient _httpClient;
static AiOptimization()
{
_httpClient = new HttpClient
{
BaseAddress = new Uri("https://api.dataforseo.com/")
};
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", ApiConfig.Base64Auth);
}
/// <summary>
/// Method: POST
/// Endpoint: https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live
/// </summary>
/// <see href="https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/live"/>
public static async Task ChatGptLlmResponsesLive()
{
var postData = new List<object>();
// a simple way to set a task, the full list of possible parameters is available in documentation
postData.Add(new
{
system_message = "communicate as if we are in a business meeting",
message_chain = new object[]
{
new
{
role = "user",
message = "Hello, what's up?"
},
new
{
role = "ai",
message = "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?"
}
},
max_output_tokens = 200,
web_search_country_iso_code = "FR",
web_search_city = "Paris",
model_name = "gpt-4o",
web_search = true,
user_prompt = "provide information on how relevant the amusement park business is in France now"
});
var content = new StringContent(JsonConvert.SerializeObject(postData), Encoding.UTF8, "application/json");
using var response = await _httpClient.PostAsync("/v3/ai_optimization/chat_gpt/llm_responses/live", content);
var result = JsonConvert.DeserializeObject<dynamic>(await response.Content.ReadAsStringAsync());
// you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if (result.status_code == 20000)
{
// do something with result
Console.WriteLine(result);
}
else
Console.WriteLine($"error. Code: {result.status_code} Message: {result.status_message}");
}The above command returns JSON structured like this:
{
"version": "0.1.20260717",
"status_code": 20000,
"status_message": "Ok.",
"time": "4.8468 sec.",
"cost": 0.029631,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "07221754-1535-0612-0000-d708c6651bc3",
"status_code": 20000,
"status_message": "Ok.",
"time": "4.8305 sec.",
"cost": 0.029631,
"result_count": 1,
"path": [
"v3",
"ai_optimization",
"chat_gpt",
"llm_responses",
"live"
],
"data": {
"api": "ai_optimization",
"function": "llm_responses",
"se": "chat_gpt",
"system_message": "communicate as if we are in a business meeting",
"message_chain": [
{
"role": "user",
"message": "Hello, what's up?"
},
{
"role": "ai",
"message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?"
}
],
"temperature": 0.3,
"top_p": 0.5,
"web_search_country_iso_code": "FR",
"web_search_city": "Paris",
"model_name": "gpt-4.1-mini",
"web_search": true,
"user_prompt": "provide information on how relevant the amusement park business is in France now"
},
"result": [
{
"model_name": "gpt-4.1-mini-2025-04-14",
"input_tokens": 8174,
"output_tokens": 476,
"reasoning_tokens": 0,
"web_search": true,
"money_spent": 0.0290312,
"datetime": "2026-07-22 17:54:30 +00:00",
"items": [
{
"type": "message",
"sections": [
{
"type": "text",
"text": "The amusement park industry in France remains a significant and dynamic sector as of 2024. In 2023, the industry achieved a turnover of approximately €2.5 billion, with major parks like Disneyland Paris, Parc Astérix, Puy du Fou, and Futuroscope accounting for 60% of the total attendance. ([latribune.fr](https://www.latribune.fr/entreprises/tourisme/2024-09-13/entre-creations-et-tensions-le-marche-des-parcs-de-loisirs-en-occitanie-joue-les-montagnes-russes-1006293.html?id=1950717847221315%5C&utm_source=openai))nnNotably, in 2024, Parc Astérix welcomed a record 2.84 million visitors, earning it the title of the best amusement park in France for the third consecutive year. ([ouest-france.fr](https://www.ouest-france.fr/tourisme/le-parc-asterix-est-elu-meilleur-parc-dattractions-de-france-decouvrez-ses-nouveaux-projets-710f3c5a-a5bb-11ef-b03c-14608f7369cf?utm_source=openai)) Similarly, Nigloland attracted 750,000 visitors, placing it among the top five parks in the country. ([parc-attraction-loisirs.fr](https://www.parc-attraction-loisirs.fr/2024/11/12/chiffre-frequentation-2024-nigloland/?utm_source=openai))nnThe Compagnie des Alpes, a leading operator in the sector, reported that its leisure parks generated €570.1 million in revenue in 2023/2024, surpassing the performance of its ski resorts. ([lechotouristique.com](https://www.lechotouristique.com/article/compagnie-des-alpes-pour-la-premiere-fois-les-parcs-de-loisirs-depassent-les-domaines-skiables?utm_source=openai))nnThese developments underscore the continued relevance and growth of the amusement park industry in France, driven by strong consumer demand and ongoing investments in new attractions and experiences. ",
"annotations": [
{
"title": "Entre créations et tensions, le marché des parcs de loisirs en Occitanie joue les montagnes russes",
"url": "https://www.latribune.fr/entreprises/tourisme/2024-09-13/entre-creations-et-tensions-le-marche-des-parcs-de-loisirs-en-occitanie-joue-les-montagnes-russes-1006293.html?id=1950717847221315%5C&utm_source=openai",
"start_index": 290,
"end_index": 516,
"text": "([latribune.fr](https://www.latribune.fr/entreprises/tourisme/2024-09-13/entre-creations-et-tensions-le-marche-des-parcs-de-loisirs-en-occitanie-joue-les-montagnes-russes-1006293.html?id=1950717847221315%5C&utm_source=openai))"
},
{
"title": "Le Parc Astérix est élu meilleur parc d’attractions de France : découvrez ses nouveaux projets",
"url": "https://www.ouest-france.fr/tourisme/le-parc-asterix-est-elu-meilleur-parc-dattractions-de-france-decouvrez-ses-nouveaux-projets-710f3c5a-a5bb-11ef-b03c-14608f7369cf?utm_source=openai",
"start_index": 680,
"end_index": 884,
"text": "([ouest-france.fr](https://www.ouest-france.fr/tourisme/le-parc-asterix-est-elu-meilleur-parc-dattractions-de-france-decouvrez-ses-nouveaux-projets-710f3c5a-a5bb-11ef-b03c-14608f7369cf?utm_source=openai))"
},
{
"title": "Parc Nigloland : bons chiffres en 2024 et nouveauté annoncée pour 2025",
"url": "https://www.parc-attraction-loisirs.fr/2024/11/12/chiffre-frequentation-2024-nigloland/?utm_source=openai",
"start_index": 986,
"end_index": 1123,
"text": "([parc-attraction-loisirs.fr](https://www.parc-attraction-loisirs.fr/2024/11/12/chiffre-frequentation-2024-nigloland/?utm_source=openai))"
},
{
"title": "Compagnie des Alpes : pour la première fois, les parcs de loisirs dépassent les domaines skiables",
"url": "https://www.lechotouristique.com/article/compagnie-des-alpes-pour-la-premiere-fois-les-parcs-de-loisirs-depassent-les-domaines-skiables?utm_source=openai",
"start_index": 1313,
"end_index": 1492,
"text": "([lechotouristique.com](https://www.lechotouristique.com/article/compagnie-des-alpes-pour-la-premiere-fois-les-parcs-de-loisirs-depassent-les-domaines-skiables?utm_source=openai))"
}
]
}
]
}
],
"fan_out_queries": [
"current relevance of amusement park business in France 2024"
]
}
]
}
]
}