> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Completion

> Create a completion for the specified agent.

<Callout icon="flask-conical" color="#14b8a6">
  This is a **beta feature** according to [Algolia's Terms of Service ("Beta Services")](https://www.algolia.com/policies/terms/).
</Callout>

**Required ACL:** `search`

This endpoint handles two types of requests:

1. Normal completion request: User message -> Agent response
2. Tool approval response: User approval -> Execute tool -> Agent response

Tool Approval Flow (for MCP tools with requiresApproval: true):

* Request 1: User sends message -> Agent requests tool call -> Return approval request
* Request 2: User approves -> Execute tool -> Agent continues with result.

## Usage

<CodeGroup>
  ```cs C# theme={"system"}
  // 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);
  ```

  ```dart Dart theme={"system"}
  // 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);
  ```

  ```go Go theme={"system"}
  // 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)
  ```

  ```java Java theme={"system"}
  // 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);
  ```

  ```js JavaScript theme={"system"}
  // 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);
  }
  ```

  ```kotlin Kotlin theme={"system"}
  // 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)
  ```

  ```php PHP theme={"system"}
  // 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);
  ```

  ```python Python theme={"system"}
  # 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)
  ```

  ```ruby Ruby theme={"system"}
  # 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)
  ```

  ```scala Scala theme={"system"}
  // 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)
  ```

  ```swift Swift theme={"system"}
  // 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)
  ```
</CodeGroup>

<Card icon="folder-code" horizontal="true" title="See the full API reference" arrow="true" href="/doc/rest-api/agent-studio/create-agent-completion">
  For more details about input parameters
  and response fields.
</Card>
