Tools API
161 of 184 tools can be called from code, with the same engines the pages use. One request shape for all of them; long work runs as a job you can follow.
At a glance
The six calls behind every tool. Rate limits are the anonymous allowance; signing in or using a token raises it, and a tool's cost counts against the limit.
| Endpoint | Purpose | Auth | Rate limit | Example |
|---|---|---|---|---|
POST /api/v1/tools/{id}/run | Run a tool inline; long work answers with a job | Anonymous; session or token for file jobs | 120/min · 5,000/day | curl -X POST https://openvibe.tools/api/v1/tools/fancy/run |
GET /api/v1/tools | List every tool with its inputs, limits and access | Public | 120/min | curl https://openvibe.tools/api/v1/tools?api=true |
GET /api/v1/tools/{id}/schema | JSON Schema for a tool's input and output | Public | 120/min | curl https://openvibe.tools/api/v1/tools/fancy/schema |
POST /api/v1/jobs | Start a long job with files and follow it | Session or token for file jobs | 60/min · 1,500/day | curl -X POST https://openvibe.tools/api/v1/jobs |
GET /api/v1/jobs/{id}/events | Follow one job as server-sent events | The job's owner | 120/min | curl -N https://openvibe.tools/api/v1/jobs/{id}/events |
GET /api/v1/jobs/{id}/files/{n} | Download a finished job's result file | The job's owner | 120/min | curl -O https://openvibe.tools/api/v1/jobs/{id}/files/0 |
Over a limit is 429 with Retry-After; every answer also carries RateLimit-* headers. Errors are RFC 9457 problems with a stable code.
Discover
Every tool is described by a machine-readable descriptor (inputs as JSON Schema, file limits, how it runs, who may call it).
- /api/v1/tools: the registry (filter with
?family=,?q=,?api=true) /api/v1/tools/{id}and/api/v1/tools/{id}/schema: one tool- /api/v1/openapi.json: OpenAPI 3.1, generated from the descriptors
Run a tool
curl -X POST https://openvibe.tools/api/v1/tools/jsonminify/run \
-H 'Content-Type: application/json' \
-d '{"input":{"text":"{ \"a\": 1 }"}}'
# → {"state":"succeeded","tool":"jsonminify","result":{"text":"{\"a\":1}"},"took_ms":3}
File tools take multipart/form-data (file parts plus an input JSON part). Work that outlasts wait_ms answers 202 with a job: follow it at /api/v1/jobs/{id}/events (server-sent events) and download results from /api/v1/jobs/{id}/files/{n}. Send an Idempotency-Key header to make retries safe.
From JavaScript
const { createClient } = require('openvibe-sdk/core');
const { createToolsClient } = require('openvibe-sdk/tools');
const tools = createToolsClient(createClient({}));
const out = await tools.run('jsonminify', { text: '{ "a": 1 }' });
const job = await tools.run('png', { format: 'png' }, { files: [fileBlob] });
const done = await job.wait(); // any tool, sync or job
The SDK is openvibe-sdk (this site pins v0.67.0). It retries on 429 after Retry-After and generates idempotency keys for you.
Access and limits
- Anonymous: most tools, on the lowest quota tier, per address. Tools that handle files people should not share anonymously (audio, PDF) need a browser session or a token.
- Apps and services: a token from OpenVibe.Network for audience
openvibe.toolswithtools.tool.run(developer sandbox apps get it by default) raises the tier. - Network probes (port checks, ping, latency) need
tools.net.probe, granted to partners only. The YouTube downloader has no API. - Every answer carries
RateLimit-*headers; over the limit is 429 withRetry-After. Errors are RFC 9457 problems with a stablecode.
One account works on every site. Open source and community-run.