curl --request POST \
--url 'https://example.algolia.net/agent-studio/1/agents/lorem/completions?compatibilityMode=ai-sdk-4&stream=true&cache=true&memory=false&analytics=true' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-algolia-api-key: ALGOLIA_API_KEY' \
--header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
--header 'x-algolia-secure-user-token: lorem' \
--data '
{
"configuration": {
"id": "lorem",
"providerId": "lorem",
"model": "lorem",
"instructions": "lorem",
"systemPrompt": "lorem",
"config": {},
"tools": [
{
"name": "lorem",
"type": "client_side",
"description": "lorem",
"inputSchema": {
"type": "object",
"properties": {},
"required": [
"lorem"
]
}
}
]
},
"messages": [
{
"id": "lorem",
"role": "user",
"content": "lorem",
"parts": [
{
"type": "text",
"text": "lorem"
}
],
"annotations": [
{}
]
}
],
"id": "lorem",
"algolia": {
"mcpServers": {
"property1": {
"property1": {
"property1": "lorem",
"property2": "lorem"
},
"property2": {
"property1": "lorem",
"property2": "lorem"
}
},
"property2": {
"property1": {
"property1": "lorem",
"property2": "lorem"
},
"property2": {
"property1": "lorem",
"property2": "lorem"
}
}
},
"searchParameters": {
"property1": {
"filters": "lorem",
"attributesToRetrieve": [
"lorem"
],
"restrictSearchableAttributes": [
"lorem"
],
"distinct": true,
"userToken": "lorem",
"enablePersonalization": true,
"personalizationImpact": 42,
"optionalFilters": "lorem"
},
"property2": {
"filters": "lorem",
"attributesToRetrieve": [
"lorem"
],
"restrictSearchableAttributes": [
"lorem"
],
"distinct": true,
"userToken": "lorem",
"enablePersonalization": true,
"personalizationImpact": 42,
"optionalFilters": "lorem"
}
}
},
"toolApprovals": {}
}
'// Initialize the client
var client = new AgentStudioClient(
new AgentStudioConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
);
// Call the API
var response = await client.CreateAgentCompletionAsync(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
Enum.Parse<CompatibilityMode>("AiSdk4"),
new AgentCompletionRequest
{
Messages = new MessagesUnion(
new List<MessageV4>
{
new MessageV4(new UserMessageV4 { Role = "user", Content = "Hello, how are you?" }),
}
),
}
);
// print the response
Console.WriteLine(response);// Initialize the client
final client = AgentStudioClient(
appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');
// Call the API
final response = await client.createAgentCompletion(
agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode: CompatibilityMode.fromJson("ai-sdk-4"),
agentCompletionRequest: AgentCompletionRequest(
messages: [
UserMessageV4(
role: "user",
content: "Hello, how are you?",
),
],
),
);
// print the response
print(response);// Initialize the client
client, err := agentStudio.NewClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
if err != nil {
// The client can fail to initialize if you pass an invalid parameter.
panic(err)
}
// Call the API
response, err := client.CreateAgentCompletion(client.NewApiCreateAgentCompletionRequest(
"76710f1b-8231-42e5-b0d1-f43aac618e15", agentStudio.CompatibilityMode("ai-sdk-4"),
agentStudio.NewEmptyAgentCompletionRequest().SetMessages(agentStudio.ArrayOfMessageV4AsMessagesUnion(
[]agentStudio.MessageV4{*agentStudio.UserMessageV4AsMessageV4(
agentStudio.NewEmptyUserMessageV4().SetRole("user").SetContent("Hello, how are you?"))}))))
if err != nil {
// handle the eventual error
panic(err)
}
// print the response
print(response)// Initialize the client
AgentStudioClient client = new AgentStudioClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");
// Call the API
Map response = client.createAgentCompletion(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
CompatibilityMode.AI_SDK_4,
new AgentCompletionRequest().setMessages(
MessagesUnion.ofListOfMessageV4(Arrays.asList(new UserMessageV4().setRole("user").setContent("Hello, how are you?")))
)
);
// print the response
System.out.println(response);// Initialize the client
const client = agentStudioClient('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
// Use the streaming variant to iterate over events
for await (const event of client.createAgentCompletionStream({
agentId: '76710f1b-8231-42e5-b0d1-f43aac618e15',
compatibilityMode: 'ai-sdk-4',
agentCompletionRequest: { messages: [{ role: 'user', content: 'Hello, how are you?' }] },
})) {
console.log(event.data);
}// Initialize the client
val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
var response =
client.createAgentCompletion(
agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode = CompatibilityMode.entries.first { it.value == "ai-sdk-4" },
agentCompletionRequest =
AgentCompletionRequest(
messages =
MessagesUnion.ofListOfMessageV4(
listOf(UserMessageV4(role = "user", content = "Hello, how are you?"))
)
),
)
// print the response
println(response)// Initialize the client
$client = AgentStudioClient::create('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
$response = $client->createAgentCompletion(
'76710f1b-8231-42e5-b0d1-f43aac618e15',
'ai-sdk-4',
['messages' => [
['role' => 'user',
'content' => 'Hello, how are you?',
],
],
],
);
// print the response
var_dump($response);# Initialize the client
# In an asynchronous context, you can use AgentStudioClient instead, which exposes the exact same methods.
client = AgentStudioClientSync("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
# Use the streaming variant to iterate over events
for event in client.create_agent_completion_stream(
agent_id="76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibility_mode="ai-sdk-4",
agent_completion_request={
"messages": [
{
"role": "user",
"content": "Hello, how are you?",
},
],
},
):
print(event.data)# Initialize the client
client = Algolia::AgentStudioClient.create("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.create_agent_completion(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
"ai-sdk-4",
Algolia::AgentStudio::AgentCompletionRequest.new(
messages: [Algolia::AgentStudio::UserMessageV4.new(role: "user", content: "Hello, how are you?")]
)
)
# print the response
puts(response)// Initialize the client
val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
val response = Await.result(
client.createAgentCompletion(
agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode = CompatibilityMode.withName("ai-sdk-4"),
agentCompletionRequest = AgentCompletionRequest(
messages = Some(
MessagesUnion(
Seq(
UserMessageV4(
role = "user",
content = "Hello, how are you?"
)
)
)
)
)
),
Duration(100, "sec")
)
// print the response
println(response)// Initialize the client
let client = try AgentStudioClient(appID: "ALGOLIA_APPLICATION_ID", apiKey: "ALGOLIA_API_KEY")
// Call the API
let response = try await client.createAgentCompletion(
agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode: CompatibilityMode.aiSdk4,
agentCompletionRequest: AgentCompletionRequest(messages: MessagesUnion
.arrayOfMessageV4([MessageV4.userMessageV4(UserMessageV4(
role: "user",
content: "Hello, how are you?"
))]))
)
// print the response
print(response){}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Create Completion
Create a completion for the specified agent.
curl --request POST \
--url 'https://example.algolia.net/agent-studio/1/agents/lorem/completions?compatibilityMode=ai-sdk-4&stream=true&cache=true&memory=false&analytics=true' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-algolia-api-key: ALGOLIA_API_KEY' \
--header 'x-algolia-application-id: ALGOLIA_APPLICATION_ID' \
--header 'x-algolia-secure-user-token: lorem' \
--data '
{
"configuration": {
"id": "lorem",
"providerId": "lorem",
"model": "lorem",
"instructions": "lorem",
"systemPrompt": "lorem",
"config": {},
"tools": [
{
"name": "lorem",
"type": "client_side",
"description": "lorem",
"inputSchema": {
"type": "object",
"properties": {},
"required": [
"lorem"
]
}
}
]
},
"messages": [
{
"id": "lorem",
"role": "user",
"content": "lorem",
"parts": [
{
"type": "text",
"text": "lorem"
}
],
"annotations": [
{}
]
}
],
"id": "lorem",
"algolia": {
"mcpServers": {
"property1": {
"property1": {
"property1": "lorem",
"property2": "lorem"
},
"property2": {
"property1": "lorem",
"property2": "lorem"
}
},
"property2": {
"property1": {
"property1": "lorem",
"property2": "lorem"
},
"property2": {
"property1": "lorem",
"property2": "lorem"
}
}
},
"searchParameters": {
"property1": {
"filters": "lorem",
"attributesToRetrieve": [
"lorem"
],
"restrictSearchableAttributes": [
"lorem"
],
"distinct": true,
"userToken": "lorem",
"enablePersonalization": true,
"personalizationImpact": 42,
"optionalFilters": "lorem"
},
"property2": {
"filters": "lorem",
"attributesToRetrieve": [
"lorem"
],
"restrictSearchableAttributes": [
"lorem"
],
"distinct": true,
"userToken": "lorem",
"enablePersonalization": true,
"personalizationImpact": 42,
"optionalFilters": "lorem"
}
}
},
"toolApprovals": {}
}
'// Initialize the client
var client = new AgentStudioClient(
new AgentStudioConfig("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
);
// Call the API
var response = await client.CreateAgentCompletionAsync(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
Enum.Parse<CompatibilityMode>("AiSdk4"),
new AgentCompletionRequest
{
Messages = new MessagesUnion(
new List<MessageV4>
{
new MessageV4(new UserMessageV4 { Role = "user", Content = "Hello, how are you?" }),
}
),
}
);
// print the response
Console.WriteLine(response);// Initialize the client
final client = AgentStudioClient(
appId: 'ALGOLIA_APPLICATION_ID', apiKey: 'ALGOLIA_API_KEY');
// Call the API
final response = await client.createAgentCompletion(
agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode: CompatibilityMode.fromJson("ai-sdk-4"),
agentCompletionRequest: AgentCompletionRequest(
messages: [
UserMessageV4(
role: "user",
content: "Hello, how are you?",
),
],
),
);
// print the response
print(response);// Initialize the client
client, err := agentStudio.NewClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
if err != nil {
// The client can fail to initialize if you pass an invalid parameter.
panic(err)
}
// Call the API
response, err := client.CreateAgentCompletion(client.NewApiCreateAgentCompletionRequest(
"76710f1b-8231-42e5-b0d1-f43aac618e15", agentStudio.CompatibilityMode("ai-sdk-4"),
agentStudio.NewEmptyAgentCompletionRequest().SetMessages(agentStudio.ArrayOfMessageV4AsMessagesUnion(
[]agentStudio.MessageV4{*agentStudio.UserMessageV4AsMessageV4(
agentStudio.NewEmptyUserMessageV4().SetRole("user").SetContent("Hello, how are you?"))}))))
if err != nil {
// handle the eventual error
panic(err)
}
// print the response
print(response)// Initialize the client
AgentStudioClient client = new AgentStudioClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");
// Call the API
Map response = client.createAgentCompletion(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
CompatibilityMode.AI_SDK_4,
new AgentCompletionRequest().setMessages(
MessagesUnion.ofListOfMessageV4(Arrays.asList(new UserMessageV4().setRole("user").setContent("Hello, how are you?")))
)
);
// print the response
System.out.println(response);// Initialize the client
const client = agentStudioClient('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
// Use the streaming variant to iterate over events
for await (const event of client.createAgentCompletionStream({
agentId: '76710f1b-8231-42e5-b0d1-f43aac618e15',
compatibilityMode: 'ai-sdk-4',
agentCompletionRequest: { messages: [{ role: 'user', content: 'Hello, how are you?' }] },
})) {
console.log(event.data);
}// Initialize the client
val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
var response =
client.createAgentCompletion(
agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode = CompatibilityMode.entries.first { it.value == "ai-sdk-4" },
agentCompletionRequest =
AgentCompletionRequest(
messages =
MessagesUnion.ofListOfMessageV4(
listOf(UserMessageV4(role = "user", content = "Hello, how are you?"))
)
),
)
// print the response
println(response)// Initialize the client
$client = AgentStudioClient::create('ALGOLIA_APPLICATION_ID', 'ALGOLIA_API_KEY');
// Call the API
$response = $client->createAgentCompletion(
'76710f1b-8231-42e5-b0d1-f43aac618e15',
'ai-sdk-4',
['messages' => [
['role' => 'user',
'content' => 'Hello, how are you?',
],
],
],
);
// print the response
var_dump($response);# Initialize the client
# In an asynchronous context, you can use AgentStudioClient instead, which exposes the exact same methods.
client = AgentStudioClientSync("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
# Use the streaming variant to iterate over events
for event in client.create_agent_completion_stream(
agent_id="76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibility_mode="ai-sdk-4",
agent_completion_request={
"messages": [
{
"role": "user",
"content": "Hello, how are you?",
},
],
},
):
print(event.data)# Initialize the client
client = Algolia::AgentStudioClient.create("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY")
# Call the API
response = client.create_agent_completion(
"76710f1b-8231-42e5-b0d1-f43aac618e15",
"ai-sdk-4",
Algolia::AgentStudio::AgentCompletionRequest.new(
messages: [Algolia::AgentStudio::UserMessageV4.new(role: "user", content: "Hello, how are you?")]
)
)
# print the response
puts(response)// Initialize the client
val client = AgentStudioClient(appId = "ALGOLIA_APPLICATION_ID", apiKey = "ALGOLIA_API_KEY")
// Call the API
val response = Await.result(
client.createAgentCompletion(
agentId = "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode = CompatibilityMode.withName("ai-sdk-4"),
agentCompletionRequest = AgentCompletionRequest(
messages = Some(
MessagesUnion(
Seq(
UserMessageV4(
role = "user",
content = "Hello, how are you?"
)
)
)
)
)
),
Duration(100, "sec")
)
// print the response
println(response)// Initialize the client
let client = try AgentStudioClient(appID: "ALGOLIA_APPLICATION_ID", apiKey: "ALGOLIA_API_KEY")
// Call the API
let response = try await client.createAgentCompletion(
agentId: "76710f1b-8231-42e5-b0d1-f43aac618e15",
compatibilityMode: CompatibilityMode.aiSdk4,
agentCompletionRequest: AgentCompletionRequest(messages: MessagesUnion
.arrayOfMessageV4([MessageV4.userMessageV4(UserMessageV4(
role: "user",
content: "Hello, how are you?"
))]))
)
// print the response
print(response){}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}- Normal completion request: User message -> Agent response
- Tool approval response: User approval -> Execute tool -> Agent response
- Request 1: User sends message -> Agent requests tool call -> Return approval request
- Request 2: User approves -> Execute tool -> Agent continues with result.
searchAuthorizations
Your Algolia application ID.
Your Algolia API key with the necessary permissions to make the request. Permissions are controlled through access control lists (ACL) and access restrictions. The required ACL to make a request is listed in each endpoint's reference.
Headers
The X-Algolia-Secure-User-Token.
Path Parameters
The agentId.
Query Parameters
Compatibility mode for the completion API. Support Compatibility modes for the completion API.
ai-sdk-4, ai-sdk-5 Set to false to skip analytics for this completion (default: true). Disables Agent Studio BigQuery analytics, Algolia search analytics, click analytics, and query-suggestions training. Useful for offline-eval workflows.
Use cached responses if available.
Set to false to disable memory (enabled by default).
Whether to stream the response or not.
Body
Request model for creating a completion for an assistant.
Show child attributes
Show child attributes
Dynamic configuration for testing agents.
Show child attributes
Show child attributes
Optional conversation id.
128- userMessageV4
- assistantMessageV4
Show child attributes
Show child attributes
Approval decisions for pending tool calls keyed by toolCallId.
Response
Successful Response.
The response is of type object.
Was this page helpful?