List harnesses and keys
curl --request GET \
--url https://api.zode.dev/v1/agents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zode.dev/v1/agents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zode.dev/v1/agents', 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.zode.dev/v1/agents",
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.zode.dev/v1/agents"
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.zode.dev/v1/agents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zode.dev/v1/agents")
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{
"harnesses": [
{
"id": "claude-code",
"name": "<string>",
"providers": [
"<string>"
],
"connected_via": [
"<string>"
],
"connected": true,
"default": true,
"default_model": "<string>",
"models": [
{
"id": "<string>",
"provider": "<string>"
}
],
"auth_method": "api_key",
"subscription": {
"kind": "claude",
"name": "<string>",
"connected": true,
"hint": "<string>",
"account_email": "<string>",
"connected_at": "2023-11-07T05:31:56Z",
"method": "paste",
"sign_in": {
"id": "<string>",
"harness": "claude-code",
"sandbox_id": "<string>",
"sandbox_name": "<string>",
"state": "starting",
"url": "<string>",
"user_code": "<string>",
"needs_code": true,
"expires_at": "2023-11-07T05:31:56Z",
"error": "<string>"
}
}
}
],
"credentials": [
{
"provider": "<string>",
"name": "<string>",
"connected": true,
"hint": "<string>",
"connected_at": "2023-11-07T05:31:56Z",
"used_by": [
"<string>"
]
}
],
"default_harness": "<string>",
"secrets_available": true,
"sign_in_sandbox": {
"id": "<string>",
"name": "<string>"
}
}{
"error": {
"code": "not_found",
"message": "<string>"
}
}{
"error": {
"code": "not_found",
"message": "<string>"
}
}Agents
List harnesses and keys
The caller’s harnesses, credentials and defaults.
Per person (D7), in any role. One card per harness (Claude Code,
Codex, OpenCode) with the providers whose API key it accepts, which
of them the caller has connected, its default model and the priced
models it can default to. Keys are
never returned: only the last 4 characters. An API token whose member
never signed in gets 403 no_user.
GET
/
v1
/
agents
List harnesses and keys
curl --request GET \
--url https://api.zode.dev/v1/agents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zode.dev/v1/agents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zode.dev/v1/agents', 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.zode.dev/v1/agents",
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.zode.dev/v1/agents"
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.zode.dev/v1/agents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zode.dev/v1/agents")
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{
"harnesses": [
{
"id": "claude-code",
"name": "<string>",
"providers": [
"<string>"
],
"connected_via": [
"<string>"
],
"connected": true,
"default": true,
"default_model": "<string>",
"models": [
{
"id": "<string>",
"provider": "<string>"
}
],
"auth_method": "api_key",
"subscription": {
"kind": "claude",
"name": "<string>",
"connected": true,
"hint": "<string>",
"account_email": "<string>",
"connected_at": "2023-11-07T05:31:56Z",
"method": "paste",
"sign_in": {
"id": "<string>",
"harness": "claude-code",
"sandbox_id": "<string>",
"sandbox_name": "<string>",
"state": "starting",
"url": "<string>",
"user_code": "<string>",
"needs_code": true,
"expires_at": "2023-11-07T05:31:56Z",
"error": "<string>"
}
}
}
],
"credentials": [
{
"provider": "<string>",
"name": "<string>",
"connected": true,
"hint": "<string>",
"connected_at": "2023-11-07T05:31:56Z",
"used_by": [
"<string>"
]
}
],
"default_harness": "<string>",
"secrets_available": true,
"sign_in_sandbox": {
"id": "<string>",
"name": "<string>"
}
}{
"error": {
"code": "not_found",
"message": "<string>"
}
}{
"error": {
"code": "not_found",
"message": "<string>"
}
}Authorizations
An API key (zode_tok_...). Create one in the console under API keys (https://console.zode.dev/tokens), or with zode login.
Response
Agents view
⌘I