> ## AI Agent Context > Get the complete documentation index at: https://aistudio.google.com/docs/llms.txt > Use this file to discover all available pages. > For the full documentation in a single file, fetch: https://aistudio.google.com/docs/llms-full.txt # Managed agents quickstart This guide walks you through creating and using Managed Agents on the Gemini API, using the [Antigravity agent](/docs/antigravity-agent). You'll make your first agent call, continue a multi-turn conversation, stream the response, download files from the sandbox, and work with the Antigravity managed agent. ## Run your first agent interaction {% id="run-your-first-agent-interaction" %} A single call to the [Interactions API](/docs) provisions a Linux sandbox, runs the agent loop, and returns the result. You'll define three parameters: * Pass in the `agent` as `"antigravity-preview-09-2026"`, which is the current version of our predefined and general purpose managed agent. * Define `environment="remote"`, to provision a new, fresh sandbox environment. * Create an input, defining what you want the agent to do. {% tabs %} {% tab label="Python" %} ```py from google import genai client = genai.Client() interaction = client.interactions.create( agent="antigravity-preview-09-2026", input="Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.", environment="remote", ) # Print the agent's final output print(f"Interaction ID: {interaction.id}") print(f"Environment ID: {interaction.environment_id}") print(f"Output: {interaction.output_text}") ``` {% /tab %} {% tab label="JavaScript" %} ```javascript import { GoogleGenAI } from "@google/genai"; const client = new GoogleGenAI({}); const interaction = await client.interactions.create({ agent: "antigravity-preview-09-2026", input: "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.", environment: "remote", }); console.log(`Interaction ID: ${interaction.id}`); console.log(`Environment ID: ${interaction.environment_id}`); console.log(`Output: ${interaction.output_text}`); ``` {% /tab %} {% tab label="Java" %} ```java import com.google.genai.Client; import com.google.genai.gaos.models.interactions.AgentOption; import com.google.genai.gaos.models.interactions.CreateAgentInteraction; import com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment; import com.google.genai.gaos.models.interactions.Interaction; import com.google.genai.gaos.models.interactions.InteractionsInput; import com.google.genai.gaos.models.operations.CreateInteractionRequestBody; Client client = new Client(); CreateAgentInteraction params = CreateAgentInteraction.builder() .agent(AgentOption.of("antigravity-preview-09-2026")) .input(InteractionsInput.of("Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.")) .environment(CreateAgentInteractionEnvironment.of("remote")) .build(); Interaction interaction = client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get(); // Print the agent's final output System.out.println("Interaction ID: " + interaction.id().orElse("")); System.out.println("Environment ID: " + interaction.environmentId().orElse("")); System.out.println("Output: " + interaction.outputText().orElse("")); ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "log" "google.golang.org/genai" "google.golang.org/genai/interactions/models/interactions" "google.golang.org/genai/interactions/models/operations" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{ Body: operations.NewCreateInteractionRequestBody(interactions.CreateAgentInteraction{ Agent: interactions.AgentOption("antigravity-preview-09-2026"), Input: interactions.NewInteractionsInput("Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents."), Environment: genai.Ptr(interactions.NewCreateAgentInteractionEnvironment("remote")), }), }) if err != nil { log.Fatal(err) } interaction := res.Interaction // Print the agent's final output fmt.Printf("Interaction ID: %s\n", *interaction.ID) fmt.Printf("Environment ID: %s\n", *interaction.EnvironmentID) fmt.Printf("Output: %s\n", *interaction.OutputText) } ``` {% /tab %} {% tab label="REST" %} ```shell curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \ -H "Content-Type: application/json" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -d '{ "agent": "antigravity-preview-09-2026", "input": [{"type": "text", "text": "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents."}], "environment": {"type": "remote"} }' ``` {% /tab %} {% /tabs %} The response returns an `Interaction` object. Store `interaction.id` and `interaction.environment_id` to continue the conversation in the same sandbox. Use `interaction.output_text` to access the agent's final response. `interaction.steps` lists each step the agent took (reasoning, tool calls, code execution). ## Continue the conversation (multi-turn) {% id="continue-conversation" %} The API tracks two independent state dimensions: - **Conversation context:** chat history, reasoning trace, tool use, using `previous_interaction_id`. - [**Environment state:**](/docs/agent-environment) files, installed packages and sandbox state, using `environment`. Pass both in their respective place to resume: {% tabs %} {% tab label="Python" %} ```py interaction_2 = client.interactions.create( agent="antigravity-preview-09-2026", previous_interaction_id=interaction.id, environment=interaction.environment_id, input="Now plot the Fibonacci sequence as a line chart and save it as chart.png.", ) print(interaction_2.output_text) ``` {% /tab %} {% tab label="JavaScript" %} ```javascript const interaction2 = await client.interactions.create({ agent: "antigravity-preview-09-2026", previous_interaction_id: interaction.id, environment: interaction.environment_id, input: "Now plot the Fibonacci sequence as a line chart and save it as chart.png.", }, { timeout: 300_000 }); console.log(interaction2.output_text); ``` {% /tab %} {% tab label="Java" %} ```java import com.google.genai.Client; import com.google.genai.gaos.models.interactions.AgentOption; import com.google.genai.gaos.models.interactions.CreateAgentInteraction; import com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment; import com.google.genai.gaos.models.interactions.Interaction; import com.google.genai.gaos.models.interactions.InteractionsInput; import com.google.genai.gaos.models.operations.CreateInteractionRequestBody; Client client = new Client(); String interactionId = "INTERACTION_ID"; String environmentId = "ENVIRONMENT_ID"; CreateAgentInteraction params = CreateAgentInteraction.builder() .agent(AgentOption.of("antigravity-preview-09-2026")) .previousInteractionId(interactionId) .environment(CreateAgentInteractionEnvironment.of(environmentId)) .input(InteractionsInput.of("Now plot the Fibonacci sequence as a line chart and save it as chart.png.")) .build(); Interaction interaction2 = client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get(); System.out.println(interaction2.outputText().orElse("")); ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "log" "google.golang.org/genai" "google.golang.org/genai/interactions/models/interactions" "google.golang.org/genai/interactions/models/operations" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } interactionID := "INTERACTION_ID" environmentID := "ENVIRONMENT_ID" res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{ Body: operations.NewCreateInteractionRequestBody(interactions.CreateAgentInteraction{ Agent: interactions.AgentOption("antigravity-preview-09-2026"), PreviousInteractionID: genai.Ptr(interactionID), Environment: genai.Ptr(interactions.NewCreateAgentInteractionEnvironment(environmentID)), Input: interactions.NewInteractionsInput("Now plot the Fibonacci sequence as a line chart and save it as chart.png."), }), }) if err != nil { log.Fatal(err) } if res.Interaction.OutputText != nil { fmt.Println(*res.Interaction.OutputText) } } ``` {% /tab %} {% tab label="REST" %} ```shell curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \ -H "Content-Type: application/json" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -d '{ "agent": "antigravity-preview-09-2026", "previous_interaction_id": "interaction_id_from_step_1", "environment": "environment_id_from_step_1", "input": [{"type": "text", "text": "Now plot the Fibonacci sequence as a line chart and save it as chart.png."}] }' ``` {% /tab %} {% /tabs %} Files from turn 1 (`fibonacci.txt`) persist in turn 2. The agent also retains conversation context. You can mix and match these independently: - **Clear conversation, keep files:** Omit `previous_interaction_id`, only pass the environment ID using `environment` for a fresh conversation in the same workspace. - **Keep conversation, new workspace:** Pass `previous_interaction_id`, set `environment="remote"` for a fresh sandbox. ### Automatic context compaction {% id="automatic-context-compaction" %} In long-running, multi-turn conversations, the raw history of reasoning steps, tool calls, and large file contents can quickly grow and consume significant context space. To prevent token limit errors and maintain the agent's focus (preventing "context rot"), the Managed Agents API features a native context compaction step at around 135k tokens. This happens automatically. ## Stream the response {% id="stream-response" %} For long-running tasks, you can stream the response to see the agent work in real time: {% tabs %} {% tab label="Python" %} ```py from google import genai client = genai.Client() stream = client.interactions.create( agent="antigravity-preview-09-2026", input="Read Hacker News, summarize the top 5 stories, and save the results as a PDF.", environment="remote", stream=True, ) for event in stream: print(event) if event.event_type == "step.stop" and event.usage: print(event.usage) ``` {% /tab %} {% tab label="JavaScript" %} ```javascript import { GoogleGenAI } from "@google/genai"; const client = new GoogleGenAI({}); const stream = await client.interactions.create({ agent: "antigravity-preview-09-2026", input: "Read Hacker News, summarize the top 5 stories, and save the results as a PDF.", environment: "remote", stream: true, }); for await (const event of stream) { console.log(event); if (event.event_type === "step.stop" && event.usage) { console.log(event.usage); } } ``` {% /tab %} {% tab label="Java" %} ```java import com.google.genai.Client; import com.google.genai.gaos.models.interactions.AgentOption; import com.google.genai.gaos.models.interactions.CreateAgentInteraction; import com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment; import com.google.genai.gaos.models.interactions.InteractionSSEStreamEvent; import com.google.genai.gaos.models.interactions.InteractionsInput; import com.google.genai.gaos.models.interactions.StepStop; import com.google.genai.gaos.models.operations.CreateInteractionRequestBody; import com.google.genai.gaos.utils.EventStream; Client client = new Client(); CreateAgentInteraction params = CreateAgentInteraction.builder() .agent(AgentOption.of("antigravity-preview-09-2026")) .input(InteractionsInput.of("Read Hacker News, summarize the top 5 stories, and save the results as a PDF.")) .environment(CreateAgentInteractionEnvironment.of("remote")) .stream(true) .build(); try (EventStream stream = client.interactions.create(CreateInteractionRequestBody.of(params)).events()) { for (InteractionSSEStreamEvent event : stream) { System.out.println(event); if (event.data().isPresent() && event.data().get() instanceof StepStop stepStop) { stepStop.usage().ifPresent(System.out::println); } } } ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "log" "google.golang.org/genai" "google.golang.org/genai/interactions/models/interactions" "google.golang.org/genai/interactions/models/operations" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{ Body: operations.NewCreateInteractionRequestBody(interactions.CreateAgentInteraction{ Agent: interactions.AgentOption("antigravity-preview-09-2026"), Input: interactions.NewInteractionsInput("Read Hacker News, summarize the top 5 stories, and save the results as a PDF."), Environment: genai.Ptr(interactions.NewCreateAgentInteractionEnvironment("remote")), Stream: genai.Ptr(true), }), }) if err != nil { log.Fatal(err) } stream := res.InteractionSSEStreamEvent defer stream.Close() for stream.Next() { event := stream.Value() fmt.Printf("%+v\n", event) if stepStop := event.GetDataStepStop(); stepStop != nil && stepStop.Usage != nil { fmt.Printf("%+v\n", stepStop.Usage) } } if err := stream.Err(); err != nil { log.Fatal(err) } } ``` {% /tab %} {% tab label="REST" %} ```shell curl -N -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \ -H "Content-Type: application/json" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -d '{ "agent": "antigravity-preview-09-2026", "input": "Read Hacker News, summarize the top 5 stories, and save the results as a PDF.", "environment": "remote", "stream": true }' ``` {% /tab %} {% /tabs %} Streaming returns step deltas with incremental updates. When a step completes, the `step.stop` event includes accumulated usage stats. Learn more in the [Streaming guide](/docs/streaming). ## Download files from the environment {% id="download-files" %} When the agent creates files inside the sandbox. Download them using the Files API with a direct HTTP request (no SDK method yet): {% tabs %} {% tab label="Python" %} ```py import os import requests import tarfile env_id = interaction.environment_id api_key = os.environ["GEMINI_API_KEY"] response = requests.get( f"https://generativelanguage.googleapis.com/v1beta/files/environment-{env_id}:download", params={"alt": "media"}, headers={"x-goog-api-key": api_key}, allow_redirects=True, ) with open("snapshot.tar", "wb") as f: f.write(response.content) with tarfile.open("snapshot.tar") as tar: tar.extractall(path="extracted_snapshot") ``` {% /tab %} {% tab label="JavaScript" %} ```javascript import fs from "fs"; import { execSync } from "child_process"; const envId = interaction.environment_id; const apiKey = process.env.GEMINI_API_KEY || ""; const url = `https://generativelanguage.googleapis.com/v1beta/files/environment-${envId}:download?alt=media`; const response = await fetch(url, { headers: { "x-goog-api-key": apiKey, }, }); if (!response.ok) { throw new Error(`Failed to download file: ${response.statusText}`); } const buffer = Buffer.from(await response.arrayBuffer()); fs.writeFileSync("snapshot.tar", buffer); if (!fs.existsSync("extracted_snapshot")) { fs.mkdirSync("extracted_snapshot"); } execSync("tar -xf snapshot.tar -C extracted_snapshot"); console.log(fs.readdirSync("extracted_snapshot")); ``` {% /tab %} {% tab label="Java" %} ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.file.Files; import java.nio.file.Paths; String envId = "ENVIRONMENT_ID"; String apiKey = System.getenv("GEMINI_API_KEY"); HttpClient httpClient = HttpClient.newBuilder() .followRedirects(HttpClient.Redirect.NORMAL) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://generativelanguage.googleapis.com/v1beta/files/environment-" + envId + ":download?alt=media")) .header("x-goog-api-key", apiKey) .GET() .build(); HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray()); Files.write(Paths.get("snapshot.tar"), response.body()); System.out.println("Saved snapshot to snapshot.tar"); ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "io" "log" "net/http" "os" ) func main() { ctx := context.Background() envID := "ENVIRONMENT_ID" apiKey := os.Getenv("GEMINI_API_KEY") url := fmt.Sprintf("https://generativelanguage.googleapis.com/v1beta/files/environment-%s:download?alt=media", envID) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { log.Fatal(err) } req.Header.Set("x-goog-api-key", apiKey) resp, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() data, err := io.ReadAll(resp.Body) if err != nil { log.Fatal(err) } if err := os.WriteFile("snapshot.tar", data, 0644); err != nil { log.Fatal(err) } fmt.Println("Saved snapshot to snapshot.tar") } ``` {% /tab %} {% tab label="REST" %} ```shell ENV_ID="your_environment_id_here" curl -L -X GET "https://generativelanguage.googleapis.com/v1beta/files/environment-$ENV_ID:download?alt=media" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -o snapshot.tar mkdir -p extracted_snapshot tar -xf snapshot.tar -C extracted_snapshot ``` {% /tab %} {% /tabs %} ## Save a managed agent {% id="save-managed-agent" %} In the previous steps, we used the default Antigravity agent and customized it inline. Once you have iterated on your configuration (instructions, skills, model selection, and environment), you can save it as a reusable managed agent. This allows you to invoke it by ID without repeating the configuration. When you save an agent, notice the architectural symmetry with inline interactions: you specify `base_agent: "antigravity-preview-09-2026"` and can pass an `agent_config` with your chosen `model` just as you would on `interactions.create`. You also define a `base_environment` (either from sources or by forking an existing environment). The agent will use this environment and model configuration for every new interaction. **From sources:** Define sources inline, or from other sources such as GitHub or Cloud Storage. {% tabs %} {% tab label="Python" %} ```py agent = client.agents.create( id="fibonacci-analyst", base_agent="antigravity-preview-09-2026", agent_config={ "type": "antigravity", "model": "gemini-3.8-flash", }, system_instruction="You are a math analysis agent. Generate sequences, visualize them, and export results as PDF reports.", base_environment={ "type": "remote", "sources": [ { "type": "inline", "target": ".agents/AGENTS.md", "content": "Always include a chart and a summary table in your reports.", }, { "type": "repository", "source": "https://github.com/your-org/skills", "target": ".agents/skills" } ], }, ) print(f"Saved agent: {agent.id}") ``` {% /tab %} {% tab label="JavaScript" %} ```javascript const agent = await client.agents.create({ id: "fibonacci-analyst", base_agent: "antigravity-preview-09-2026", agent_config: { type: "antigravity", model: "gemini-3.8-flash", }, system_instruction: "You are a math analysis agent. Generate sequences, visualize them, and export results as PDF reports.", base_environment: { type: "remote", sources: [ { type: "inline", target: ".agents/AGENTS.md", content: "Always include a chart and a summary table in your reports.", }, { type: "repository", source: "https://github.com/your-org/skills", target: ".agents/skills" } ], }, }); console.log(`Saved agent: ${agent.id}`); ``` {% /tab %} {% tab label="Java" %} ```java import com.google.genai.Client; import com.google.genai.gaos.models.agents.Agent; import com.google.genai.gaos.models.agents.AgentConfig; import com.google.genai.gaos.models.agents.BaseEnvironment; import com.google.genai.gaos.models.interactions.AntigravityAgentConfig; import com.google.genai.gaos.models.interactions.Environment; import com.google.genai.gaos.models.interactions.Source; import com.google.genai.gaos.models.interactions.SourceType; import java.util.List; Client client = new Client(); Environment env = Environment.builder() .sources(List.of( Source.builder() .type(SourceType.INLINE) .target(".agents/AGENTS.md") .content("Always include a chart and a summary table in your reports.") .build(), Source.builder() .type(SourceType.REPOSITORY) .source("https://github.com/your-org/skills") .target(".agents/skills") .build() )) .build(); Agent agentParams = Agent.builder() .id("fibonacci-analyst") .baseAgent("antigravity-preview-09-2026") .agentConfig(AgentConfig.of( AntigravityAgentConfig.builder() .model("gemini-3.8-flash") .build() )) .systemInstruction("You are a math analysis agent. Generate sequences, visualize them, and export results as PDF reports.") .baseEnvironment(BaseEnvironment.of(env)) .build(); Agent agent = client.agents.create(agentParams).agent().get(); System.out.println("Saved agent: " + agent.id().orElse("")); ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "log" "google.golang.org/genai" "google.golang.org/genai/interactions/models/agents" "google.golang.org/genai/interactions/models/interactions" "google.golang.org/genai/interactions/models/operations" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } env := interactions.Environment{ Sources: []interactions.Source{ { Type: interactions.SourceTypeInline.ToPointer(), Target: genai.Ptr(".agents/AGENTS.md"), Content: genai.Ptr("Always include a chart and a summary table in your reports."), }, { Type: interactions.SourceTypeRepository.ToPointer(), Source: genai.Ptr("https://github.com/your-org/skills"), Target: genai.Ptr(".agents/skills"), }, }, } res, err := client.Agents.Create(ctx, operations.CreateAgentRequest{ Body: agents.Agent{ ID: genai.Ptr("fibonacci-analyst"), BaseAgent: genai.Ptr("antigravity-preview-09-2026"), AgentConfig: genai.Ptr(agents.NewAgentConfig(interactions.AntigravityAgentConfig{ Model: genai.Ptr("gemini-3.8-flash"), })), SystemInstruction: genai.Ptr("You are a math analysis agent. Generate sequences, visualize them, and export results as PDF reports."), BaseEnvironment: genai.Ptr(agents.NewBaseEnvironment(env)), }, }) if err != nil { log.Fatal(err) } fmt.Printf("Saved agent: %s\n", *res.Agent.ID) } ``` {% /tab %} {% tab label="REST" %} ```shell curl -X POST "https://generativelanguage.googleapis.com/v1beta/agents" \ -H "Content-Type: application/json" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -d '{ "id": "fibonacci-analyst", "base_agent": "antigravity-preview-09-2026", "agent_config": { "type": "antigravity", "model": "gemini-3.8-flash" }, "system_instruction": "You are a math analysis agent. Generate sequences, visualize them, and export results as PDF reports.", "base_environment": { "type": "remote", "sources": [ { "type": "inline", "target": ".agents/AGENTS.md", "content": "Always include a chart and a summary table in your reports." }, { "type": "repository", "source": "https://github.com/your-org/skills", "target": ".agents/skills" } ] } }' ``` {% /tab %} {% /tabs %} ## Invoke the managed agent {% id="invoke-managed-agent" %} Once you've saved a managed agent, you can invoke it by ID. Each invocation forks the base environment, so every run starts clean: {% tabs %} {% tab label="Python" %} ```py result = client.interactions.create( agent="fibonacci-analyst", input="Generate the first 50 prime numbers, plot their distribution, and save a PDF report.", environment="remote", ) print(result.output_text) ``` {% /tab %} {% tab label="JavaScript" %} ```javascript const result = await client.interactions.create({ agent: "fibonacci-analyst", input: "Generate the first 50 prime numbers, plot their distribution, and save a PDF report.", environment: "remote", }, { timeout: 300_000, }); console.log(result.output_text); ``` {% /tab %} {% tab label="Java" %} ```java import com.google.genai.Client; import com.google.genai.gaos.models.interactions.AgentOption; import com.google.genai.gaos.models.interactions.CreateAgentInteraction; import com.google.genai.gaos.models.interactions.CreateAgentInteractionEnvironment; import com.google.genai.gaos.models.interactions.Interaction; import com.google.genai.gaos.models.interactions.InteractionsInput; import com.google.genai.gaos.models.operations.CreateInteractionRequestBody; Client client = new Client(); CreateAgentInteraction params = CreateAgentInteraction.builder() .agent(AgentOption.of("fibonacci-analyst")) .input(InteractionsInput.of("Generate the first 50 prime numbers, plot their distribution, and save a PDF report.")) .environment(CreateAgentInteractionEnvironment.of("remote")) .build(); Interaction result = client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get(); System.out.println(result.outputText().orElse("")); ``` {% /tab %} {% tab label="Go" %} ```go package main import ( "context" "fmt" "log" "google.golang.org/genai" "google.golang.org/genai/interactions/models/interactions" "google.golang.org/genai/interactions/models/operations" ) func main() { ctx := context.Background() client, err := genai.NewClient(ctx, nil) if err != nil { log.Fatal(err) } res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{ Body: operations.NewCreateInteractionRequestBody(interactions.CreateAgentInteraction{ Agent: interactions.AgentOption("fibonacci-analyst"), Input: interactions.NewInteractionsInput("Generate the first 50 prime numbers, plot their distribution, and save a PDF report."), Environment: genai.Ptr(interactions.NewCreateAgentInteractionEnvironment("remote")), }), }) if err != nil { log.Fatal(err) } if res.Interaction.OutputText != nil { fmt.Println(*res.Interaction.OutputText) } } ``` {% /tab %} {% tab label="REST" %} ```shell curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \ -H "Content-Type: application/json" \ -H "x-goog-api-key: $GEMINI_API_KEY" \ -H "Api-Revision: 2026-05-20" \ -d '{ "agent": "fibonacci-analyst", "environment": "remote", "input": "Generate the first 50 prime numbers, plot their distribution, and save a PDF report." }' ``` {% /tab %} {% /tabs %} ## What's next {% id="whats-next" %} - [Antigravity Agent](/docs/antigravity-agent): capabilities, supported tools, multimodal input, pricing, and limitations. - [Building Managed Agents](/docs/custom-agents): extend Antigravity with your own instructions, skills, and data. - [Environments](/docs/agent-environment): sources, networking, lifecycle, resource limits. - [Interactions API](/docs/interactions-overview): the underlying API for models and agents.