cURL
curl "https://api.ornnai.com/api/llm-coding/products" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/llm-coding/products",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
products = resp.json()["data"]
const res = await fetch(
"https://api.ornnai.com/api/llm-coding/products",
{ headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const { data } = await res.json();
<?php
$ch = curl_init("https://api.ornnai.com/api/llm-coding/products");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
)
func main() {
endpoint := "https://api.ornnai.com/api/llm-coding/products"
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/llm-coding/products"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/llm-coding/products")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"data": [
{
"id": "cc-prs",
"label": "Claude PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "codex-prs",
"label": "Codex PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "copilot-prs",
"label": "Copilot PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cursor-prs",
"label": "Cursor PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "devin-prs",
"label": "Devin PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-commits",
"label": "Claude Commits",
"category": "commits",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-merge",
"label": "Claude Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "codex-merge",
"label": "Codex Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "copilot-merge",
"label": "Copilot Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "cursor-merge",
"label": "Cursor Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "devin-merge",
"label": "Devin Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-vs-codex",
"label": "Claude vs Codex",
"category": "prs",
"kind": "count",
"compare": true,
"seriesLabels": [
"Claude PRs",
"Codex PRs"
]
},
{
"id": "cc-vs-codex-merge",
"label": "Claude vs Codex Merge",
"category": "merge",
"kind": "pct",
"compare": true,
"seriesLabels": [
"Claude Merge",
"Codex Merge"
]
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}List available LLM coding products
The list of pre-built products exposed by the LLM coding endpoints. Each product pairs a tool with a metric (PRs, commits, or merge rate). Use this to drive a selector without hard-coding product IDs.
GET
/
api
/
llm-coding
/
products
cURL
curl "https://api.ornnai.com/api/llm-coding/products" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
resp = requests.get(
"https://api.ornnai.com/api/llm-coding/products",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
products = resp.json()["data"]
const res = await fetch(
"https://api.ornnai.com/api/llm-coding/products",
{ headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const { data } = await res.json();
<?php
$ch = curl_init("https://api.ornnai.com/api/llm-coding/products");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer YOUR_API_KEY"],
]);
$data = json_decode(curl_exec($ch), true);
package main
import (
"io"
"net/http"
)
func main() {
endpoint := "https://api.ornnai.com/api/llm-coding/products"
req, _ := http.NewRequest("GET", endpoint, nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
_ = body
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(
URI.create("https://api.ornnai.com/api/llm-coding/products"))
.header("Authorization", "Bearer YOUR_API_KEY")
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
require "net/http"
require "json"
uri = URI("https://api.ornnai.com/api/llm-coding/products")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer YOUR_API_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"success": true,
"data": [
{
"id": "cc-prs",
"label": "Claude PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "codex-prs",
"label": "Codex PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "copilot-prs",
"label": "Copilot PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cursor-prs",
"label": "Cursor PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "devin-prs",
"label": "Devin PRs",
"category": "prs",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-commits",
"label": "Claude Commits",
"category": "commits",
"kind": "count",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-merge",
"label": "Claude Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "codex-merge",
"label": "Codex Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "copilot-merge",
"label": "Copilot Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "cursor-merge",
"label": "Cursor Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "devin-merge",
"label": "Devin Merge",
"category": "merge",
"kind": "pct",
"compare": false,
"seriesLabels": null
},
{
"id": "cc-vs-codex",
"label": "Claude vs Codex",
"category": "prs",
"kind": "count",
"compare": true,
"seriesLabels": [
"Claude PRs",
"Codex PRs"
]
},
{
"id": "cc-vs-codex-merge",
"label": "Claude vs Codex Merge",
"category": "merge",
"kind": "pct",
"compare": true,
"seriesLabels": [
"Claude Merge",
"Codex Merge"
]
}
]
}{
"error": "Unauthorized",
"message": "API key required. Use Authorization: Bearer YOUR_API_KEY"
}Overview
The list of pre-built products exposed by the LLM coding endpoints. Each product pairs a tool with a metric (PRs, commits, or merge rate). Use this to drive a selector without hard-coding product IDs.Response
Available products.
⌘I

