API
Admins can create an API key and publish tools straight to the directory. Requests without a valid key are rejected, and tools submitted with a key go live immediately.
Endpoint
POST https://byok.dev/api/public/toolsHeaders
Content-Type: application/json
x-api-key: byok_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCreate and delete keys on the Admin page. A key is shown once at creation — store it safely. Authorization: Bearer <key> works too.
Body
{
"name": "Ollama",
"url": "https://ollama.com",
"logoUrl": "https://ollama.com/public/icon.png",
"description": "Run open large language models locally on your own machine with a single command.",
"category": "Local models & runtimes",
"isLocalAi": true,
"isByok": false,
"twitterUrl": "https://twitter.com/ollama",
"instagramUrl": null,
"linkedinUrl": null,
"githubUrl": "https://github.com/ollama/ollama"
}- name — 2–60 characters, required
- url — full http(s) link, required
- description — 30–1000 characters, required
- category — required, one of: Chat assistants, Coding, Image, Audio & voice, Agents & automation, Local models & runtimes, Search & research, Other
- isLocalAi, isByok — booleans, default false
- logoUrl, twitterUrl, instagramUrl, linkedinUrl, githubUrl — optional full http(s) links or null
Example request
curl -X POST https://byok.dev/api/public/tools \
-H "Content-Type: application/json" \
-H "x-api-key: byok_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{ "name": "Ollama", "url": "https://ollama.com", "logoUrl": "https://ollama.com/public/icon.png", "description": "Run open large language models locally on your own machine with a single command.", "category": "Local models & runtimes", "isLocalAi": true, "isByok": false, "twitterUrl": "https://twitter.com/ollama", "instagramUrl": null, "linkedinUrl": null, "githubUrl": "https://github.com/ollama/ollama" }'Response
{
"id": "6f1c…",
"slug": "ollama",
"status": "approved",
"url": "https://byok.dev/tool/ollama"
}- 201 — tool created and published
- 401 — missing, revoked or non-admin key
- 422 — validation failed, with a details list