Docs
Vortops has one address, https://api.vortops.com, and four calls. Accounts are open and keys are issued from your dashboard. Ask for early access and we will set up your account and a free test key.
Quickstart
- Get a test key. It starts with
vk_test_. Test keys never call a model and never cost anything. - Check it works. This returns who the key belongs to.
curl https://api.vortops.com/v1/me \
-H "Authorization: Bearer $VORTOPS_KEY"- Switch to a live key (
vk_live_) and ask for something real.
curl https://api.vortops.com/v1/route \
-H "Authorization: Bearer $VORTOPS_KEY" \
-H "Content-Type: application/json" \
-d '{
"task": "greeting",
"model": "@cf/meta/llama-3.2-3b-instruct",
"input": {
"messages": [{ "role": "user", "content": "Say hello in five words." }],
"max_tokens": 20
}
}'The reply includes what it cost.
{
"output": { "response": "Hello there, friend, welcome!" },
"request_id": "req_4f1c0b7a9d2e41a8b3c6d0e2",
"model": "@cf/meta/llama-3.2-3b-instruct",
"credits_charged": 1,
"mode": "live"
}Keys
- Each project has its own keys. Make a live key and a test key, and give each a name such as "Production".
- A key is shown once when it is created. Vortops keeps only a hash, so a lost key cannot be recovered. Make a new one and revoke the old one.
- Revoking a key works at once.
- Keep keys on your server. Never put one in a web page, a mobile app or a public repository. Vortops does not allow calls from browsers, on purpose.
Endpoints
| Call | What it does |
|---|---|
GET /v1/health | Is the service up. No key needed. |
GET /v1/models | The models you can use. No key needed. |
GET /v1/me | Who this key is: the project, its billing mode, credits used this month and credits left. |
POST /v1/tasks/seo-audit | Check a public website and get a report with 31 plain-language checks, a score, the most important fixes and a short summary. Send url and optionally business. Costs a flat 8 credits (about US$0.08). Test keys return a free sample. |
POST /v1/tasks/image-check | Alt text, title, caption, tags, hidden-data review and a web copy for a picture. Send image_url or image_base64. Costs a flat 3 credits (about US$0.03). Test keys return a free sample. |
POST /v1/tasks/reply-helper | A summary, advice and three replies for a customer's review or message. Send message. Costs a flat 2 credits (about US$0.02). Test keys return a free sample. |
POST /v1/tasks/review-insights | Themes, praise, complaints and what to fix first from a batch of reviews. Send reviews. Costs a flat 4 credits (about US$0.04). Test keys return a free sample. |
POST /v1/tasks/post-ideas | Social post ideas sized for a platform. Send business and optionally platform, tone and topic. Costs a flat 3 credits (about US$0.03). Test keys return a free sample. |
POST /v1/tasks/review-request | Honest ways to ask a customer for a review. Send business and channel. Costs a flat 2 credits (about US$0.02). Test keys return a free sample. |
POST /v1/tasks/draft-check | Risks in a reply or post before it is published, with a safer version. Send draft. Costs a flat 2 credits (about US$0.02). Test keys return a free sample. |
POST /v1/tasks/titles-check | Title, description and sharing tags of a page, with rewrites. Send url. Costs a flat 2 credits (about US$0.02). Test keys return a free sample. |
POST /v1/tasks/links-check | Broken and redirecting links on a page. Send url. Costs a flat 3 credits (about US$0.03). Test keys return a free sample. |
POST /v1/tasks/speed-check | Page weight, blocking scripts, compression and caching. Send url. Costs a flat 3 credits (about US$0.03). Test keys return a free sample. |
POST /v1/tasks/accessibility-check | Common accessibility problems on a page. Send url. Costs a flat 3 credits (about US$0.03). Test keys return a free sample. |
POST /v1/tasks/security-check | https, security headers and cookie flags. Send url. Costs a flat 2 credits (about US$0.02). Test keys return a free sample. |
POST /v1/route | Run a model. Send model, input and an optional task label for your own reports. |
Models
These are the models you can send to /v1/route today. GET /v1/models always returns the live list. Prices are in US dollars per million tokens (1 million tokens is roughly 750,000 words). Every call costs at least 1 credit. Models that think first use part of max_tokens on that thinking, so give them room.
| Model | Type | Good for | In | Out |
|---|---|---|---|---|
@cf/meta/llama-3.2-1b-instruct | Text | Tiny and fast. Short replies, labels, simple rewrites. | $0.095 | $0.704 |
@cf/meta/llama-3.2-3b-instruct | Text | Small and cheap. Good default for short everyday tasks. | $0.178 | $1.17 |
@cf/meta/llama-3.1-8b-instruct-fp8-fast | Text | Fast all-rounder for summaries, classification and drafts. | $0.158 | $1.34 |
@cf/meta/llama-3.3-70b-instruct-fp8-fast | Text | Strongest Llama here. Better writing and reasoning. | $1.03 | $7.89 |
@cf/meta/llama-4-scout-17b-16e-instruct | Text and images | Long inputs and pictures as input. | $0.945 | $2.98 |
@cf/google/gemma-4-26b-a4b-it | Text (thinks first) | Reasoning model. Allow extra max_tokens, or send reasoning_effort: "low". | $0.350 | $1.05 |
@cf/qwen/qwen3-30b-a3b-fp8 | Text (thinks first) | Reasoning model. Allow extra max_tokens. | $0.178 | $1.17 |
@cf/zai-org/glm-5.3-flash | Text and images (thinks first) | Reasoning model that also reads images. Good for structured JSON. | $0.525 | $1.75 |
@cf/black-forest-labs/flux-1-schnell | Image | Fast image generation. Priced per image size and step. | From 2 credits (about US$0.02) | |
More models are added after they are tested through Vortops. Ask for one on the early access form.
Credits
A credit is US$0.01 at list price. Each call is measured and charged at about 3.5 times what it cost to run, rounded up, with a minimum of 1 credit. A fast image costs at least 2. A call that fails is not charged. See pricing and the credits policy.
A project can be paid for by an account's credits, or by the project's own account (an internal or corporate account billed monthly). Either way you can set a monthly credit limit on a project.
Errors
Every error looks the same: a short code your code can check and a sentence a person can read.
{ "error": { "code": "insufficient_credits", "message": "There are no credits left on this account. ..." } }| Code | Status | Meaning |
|---|---|---|
missing_api_key | 401 | No key was sent. Add the header Authorization: Bearer YOUR_KEY. |
invalid_api_key | 401 | The key is wrong, was copied only in part, or has been revoked. |
project_paused | 403 | The project is paused, so its keys do not work for now. |
account_suspended | 403 | The account is suspended. |
invalid_json | 400 | The body was not valid JSON. |
missing_fields | 400 | Both model and input are required. |
model_not_available | 400 | The model is not one Vortops offers yet. GET /v1/models lists them. |
model_not_allowed | 403 | This project is limited to certain models and this is not one. |
rate_limited | 429 | Too many requests in a minute for this project. Wait and retry. |
spend_limit_reached | 429 | The project used its monthly credit limit. It resets on the first of the month or can be raised. |
insufficient_credits | 402 | The account has no credits left. Add credits and retry. |
model_error | 502 | The model could not finish the request. You are not charged. |
VortopsBot
The website check fetches the page you ask about, the way a visitor's browser would, and a few small files such as robots.txt and sitemap.xml. It identifies itself as VortopsBot/1.0, sends no cookies, follows at most four redirects, waits at most eight seconds and reads at most 1.5 MB. It only visits public websites: addresses that point to a private network, localhost or an unusual port are refused. It runs only when a person asks for a check.
Limits
Each project has a rate limit (requests a minute) and an optional monthly credit limit. Both are set per project. Only models listed at /v1/models can be used, so nothing runs that has no price.