Models
List models
List the LLM models available to your Nairi organization across all connected providers — Claude, Codex, OpenCode — with their identifiers and labels.
Returns the LLM catalog. The id of each entry is a model slug (for example opus-4.5, sonnet-4.6, claude-opus-4-7) — pass it as entity_id when assigning an llm_model via POST /agents/{agent_id}/resources.
GET /api/public/v1/modelsQuery parameters
| Parameter | Type | Description |
|---|---|---|
provider | string | Filter the catalog to a single provider (e.g. anthropic, opencode, codex). When omitted, returns all models the calling organization is entitled to use. |
Example
curl -X GET "https://api.nairi.ai/api/public/v1/models?provider=anthropic" \
-H "Authorization: Bearer $NAIRI_API_KEY"const url = new URL("https://api.nairi.ai/api/public/v1/models");
url.searchParams.set("provider", "anthropic");
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.NAIRI_API_KEY}` },
});
const models = (await res.json()) as Array<{
id: string;
display_name: string;
input_price: number | null;
output_price: number | null;
is_free: boolean;
}>;require "net/http"
require "json"
require "uri"
uri = URI("https://api.nairi.ai/api/public/v1/models")
uri.query = URI.encode_www_form(provider: "anthropic")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{ENV['NAIRI_API_KEY']}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
models = JSON.parse(res.body)import os
import requests
res = requests.get(
"https://api.nairi.ai/api/public/v1/models",
headers={"Authorization": f"Bearer {os.environ['NAIRI_API_KEY']}"},
params={"provider": "anthropic"},
)
models = res.json()package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
params := url.Values{}
params.Set("provider", "anthropic")
req, _ := http.NewRequest("GET", "https://api.nairi.ai/api/public/v1/models?"+params.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("NAIRI_API_KEY"))
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
raw, _ := io.ReadAll(res.Body)
var models []map[string]any
json.Unmarshal(raw, &models)
fmt.Println(models)
}Response: 200 OK
[
{
"id": "claude-opus-4-7",
"display_name": "Claude Opus 4.7",
"input_price": 15.0,
"output_price": 75.0,
"is_free": false
},
{
"id": "sonnet-4.6",
"display_name": "Claude Sonnet 4.6",
"input_price": 3.0,
"output_price": 15.0,
"is_free": false
}
]Response fields
| Field | Type | Description |
|---|---|---|
id | string | Model slug. Pass as entity_id when assigning llm_model. |
display_name | string | Human-readable model name. |
input_price | number | null | Input price per 1M tokens (USD). |
output_price | number | null | Output price per 1M tokens (USD). |
List GitHub repos
List the GitHub repositories your Nairi organization can access through the connected GitHub App installation. Returns repo names, IDs, and visibility.
Overview
What scheduled jobs are and how to run recurring agent prompts on a cron schedule. Create, list, update, and delete jobs through the Nairi REST API.