cURL
curl 'https://api.gumloop.com/api/v1/agents/abc123DEFghiJKL/versions?page_size=20' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'from gumloop import Gumloop
client = Gumloop(access_token="YOUR_ACCESS_TOKEN")
response = client.agents.list_versions("abc123DEFghiJKL")
for version in response.versions:
print(version.id, version.major_version, version.is_deployed)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gumloop.com/api/v1/agents/{agent_id}/versions', 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://api.gumloop.com/api/v1/agents/{agent_id}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gumloop.com/api/v1/agents/{agent_id}/versions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gumloop.com/api/v1/agents/{agent_id}/versions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gumloop.com/api/v1/agents/{agent_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"versions": [
{
"id": "gv_a1b2c3d4",
"agent_id": "abc123DEFghiJKL",
"major_version": 3,
"name": "Sales research agent",
"is_deployed": true,
"created_at": "2026-05-16T09:10:00Z",
"creator": {
"id": "user_8c2a1b",
"first_name": "Ada",
"last_name": "Lovelace",
"email": "ada@example.com",
"profile_picture": null
}
},
{
"id": "gv_e5f6g7h8",
"agent_id": "abc123DEFghiJKL",
"major_version": 2,
"name": "Sales research agent",
"is_deployed": null,
"created_at": "2026-05-02T09:11:00Z",
"creator": {
"id": "user_8c2a1b",
"first_name": "Ada",
"last_name": "Lovelace",
"email": "ada@example.com",
"profile_picture": null
}
}
],
"next_cursor": "eyJjcmVhdGVkX3RzIjoiMjAyNi0wNS0wMlQwOToxMTowMFoifQ=="
}List agent versions
List the immutable versions of an agent, newest first. Each entry is a point-in-time snapshot of the agent’s configuration.
Requires configuration access on the agent — callers limited to using the agent (no configuration access) get a 403.
GET
/
agents
/
{agent_id}
/
versions
cURL
curl 'https://api.gumloop.com/api/v1/agents/abc123DEFghiJKL/versions?page_size=20' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'from gumloop import Gumloop
client = Gumloop(access_token="YOUR_ACCESS_TOKEN")
response = client.agents.list_versions("abc123DEFghiJKL")
for version in response.versions:
print(version.id, version.major_version, version.is_deployed)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gumloop.com/api/v1/agents/{agent_id}/versions', 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://api.gumloop.com/api/v1/agents/{agent_id}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gumloop.com/api/v1/agents/{agent_id}/versions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gumloop.com/api/v1/agents/{agent_id}/versions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gumloop.com/api/v1/agents/{agent_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"versions": [
{
"id": "gv_a1b2c3d4",
"agent_id": "abc123DEFghiJKL",
"major_version": 3,
"name": "Sales research agent",
"is_deployed": true,
"created_at": "2026-05-16T09:10:00Z",
"creator": {
"id": "user_8c2a1b",
"first_name": "Ada",
"last_name": "Lovelace",
"email": "ada@example.com",
"profile_picture": null
}
},
{
"id": "gv_e5f6g7h8",
"agent_id": "abc123DEFghiJKL",
"major_version": 2,
"name": "Sales research agent",
"is_deployed": null,
"created_at": "2026-05-02T09:11:00Z",
"creator": {
"id": "user_8c2a1b",
"first_name": "Ada",
"last_name": "Lovelace",
"email": "ada@example.com",
"profile_picture": null
}
}
],
"next_cursor": "eyJjcmVhdGVkX3RzIjoiMjAyNi0wNS0wMlQwOToxMTowMFoifQ=="
}Authorizations
Path Parameters
ID of the agent whose versions to list. Also accepts the reserved aliases gumball and analytics.
Query Parameters
Number of versions to return per page. Clamped to 1–100.
Required range:
1 <= x <= 100Opaque pagination cursor returned by a prior call as next_cursor.
Was this page helpful?
⌘I
