HyperAI Run

Use it in your app

With an API key, your website, app, script or AI agent sends a picture and gets back what is in it: from HyperCluster’s AI chips, or from the AI you trained yourself.

    Our AI chips

    Things in the picture with a box around each, what it shows, any text, and faces. Paid per picture from your HyperAI credit; a call that fails costs nothing.

    Your own AI

    A YOLO model you keep in My models answers the same way, on a member’s graphics card, paid by the second.

    From an AI agent

    Claude Code, Cursor, VS Code and other AI agents can use HyperAI as a tool, through MCP: list your models, run one on a picture, add one from a link. Same key, same prices. How to connect one

    How to call it

    Send your key in the Authorization header, and the picture (JPEG, PNG or WebP) as a form upload or as the body itself, at most 10 MB; or in JSON, as base64 ("image", at most 8 MB) or as a public https link to it ("image_url").

    Ask our AI chips about a picture

    curl https://ai.hypercluster.org/v1/vision/analyze \
      -H "Authorization: Bearer $HYPERAI_KEY" \
      -F [email protected] \
      -F tasks=objects,text

    tasks is any of objects (things found, from 80 everyday kinds, each with a box), labels (what the picture shows, from 1,000 kinds), text (words and numbers, each with its four corners) and faces (how many, each with a box). Leave it out for all four.

    What comes back

    {
      "id": "4f1c…",
      "object": "vision.analysis",
      "image": { "width": 1920, "height": 1080 },
      "tasks": ["objects", "text"],
      "objects": [ { "label": "car", "score": 0.91, "box": [412, 380, 1210, 905] } ],
      "text": [ { "text": "WXY 1234", "score": 0.97, "box": [[640, 700], [880, 702], [879, 760], [639, 758]] } ],
      "models": { "yolov8n": "2026.10.1", "ppocrv4_det": "2026.10.1", "ppocrv4_rec": "2026.10.1" },
      "ms": 640,
      "cost": { "hypec": 0.45, "usd": 0.0045 },
      "balance": { "hypec": 99.55 }
    }

    Boxes are [left, top, right, bottom] in pixels of your picture, the right way up. Scores go from 0 to 1.

    Run your own model

    A model you keep in My models (a YOLO model you trained or uploaded: a .pt, or one exported to .onnx) runs on a member’s graphics card. It is paid for by the second it takes (at least one second, usually one to three), at the rate of the graphics card that runs it.

    curl https://ai.hypercluster.org/v1/models/MODEL_ID/predict \
      -H "Authorization: Bearer $HYPERAI_KEY" \
      -F [email protected]
    {
      "id": "9b2e…",
      "object": "model.prediction",
      "model": { "id": "MODEL_ID", "name": "Plate finder", "task": "detect" },
      "image": { "width": 1920, "height": 1080 },
      "objects": [ { "label": "plate", "class": 0, "score": 0.93, "box": [640, 700, 880, 760] } ],
      "gpu": "NVIDIA GeForce RTX 4070",
      "seconds": 1.8,
      "ms": 2410,
      "cost": { "hypec": 0.007146, "usd": 0.000071 },
      "balance": { "hypec": 99.54 }
    }

    A classification model answers with classes (its top five, each with a label and a score) instead of objects. The labels are the names you keep with the model in My models.

    Chat with your fine-tuned model

    A chat model you fine-tuned and keep in My models (its LoRA adapter) answers on a member’s graphics card, with the model it was trained on under it. It is paid for by the second it takes, as above. The first chat with it on a PC can take some minutes, while the PC fetches that model (not charged): then the answer is 202 with a poll address to ask again.

    curl https://ai.hypercluster.org/v1/models/MODEL_ID/chat \
      -H "Authorization: Bearer $HYPERAI_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "messages": [ { "role": "user", "content": "Where is the office?" } ], "max_tokens": 256 }'
    {
      "id": "5c1d…",
      "object": "model.chat",
      "status": "done",
      "reply": { "role": "assistant", "content": "Our office is in Kuala Lumpur." },
      "usage": { "tokensIn": 14, "tokensOut": 9 },
      "gpu": "NVIDIA GeForce RTX 3080 Laptop GPU",
      "seconds": 6.2,
      "cost": { "hypec": 0.03, "usd": 0.0003 },
      "balance": { "hypec": 99.51 }
    }

    What was said goes to the member’s PC and back; we keep the reply only until you collect it (10 minutes at most), and record only its tokens, time and cost.

    Add a model

    From a public https link straight to the file, for example a Hugging Face or GitHub download link: it is fetched, checked and kept encrypted, usually within a minute. Ask for the model until its status turns ready (or failed, with the reason). This needs a key you allowed to change models.

    curl https://ai.hypercluster.org/v1/models \
      -H "Authorization: Bearer $HYPERAI_KEY" \
      -H "Content-Type: application/json" \
      -d '{ "url": "https://huggingface.co/you/plates/resolve/main/best.pt", "name": "Plate finder" }'

    A file on your computer goes up in pieces. Start with POST /v1/models and { "fileName": "best.pt", "bytes": 6200000 }: the answer gives the model's id and the largest piece. Then send each piece with PUT /v1/models/ID/chunk?offset=N, and finish with POST /v1/models/ID/done.

    import os, requests
    
    KEY = {"Authorization": f"Bearer {os.environ['HYPERAI_KEY']}"}
    API = "https://ai.hypercluster.org/v1"
    path = "best.pt"
    r = requests.post(f"{API}/models", headers=KEY,
                      json={"fileName": path, "bytes": os.path.getsize(path), "name": "Plate finder"}).json()
    model, size = r["model"]["id"], r["upload"]["chunkBytes"]
    with open(path, "rb") as f:
        offset = 0
        while piece := f.read(size):
            requests.put(f"{API}/models/{model}/chunk", params={"offset": offset}, headers=KEY, data=piece).raise_for_status()
            offset += len(piece)
    print(requests.post(f"{API}/models/{model}/done", headers=KEY).json()["status"])

    A model is a YOLO model from Ultralytics, as a .pt or exported to .onnx (both run here), or another .onnx or PyTorch file (kept, but only YOLO models can run for now), at most 1 GB; you keep up to 1 GB of models free.

    Also

    • GET /v1/balance: your HYPEC balance.
    • GET /v1/models: the models you keep, with their ids and where each stands (ready, preparing, uploading or failed), and whether it can run.
    • PATCH /v1/models/ID: rename a model ({ "name": "…" }) or change its labels ({ "labels": [...] }); DELETE /v1/models/ID: delete it. Both need a key allowed to change models.
    • GET /v1/openapi.json: all of it, described for tools that read OpenAPI.

    Use it from an AI agent

    HyperAI is also an MCP server, so an AI agent can use it as a tool: https://ai.hypercluster.org/mcp, with your API key in the Authorization header. Give the agent a key of its own with a monthly limit, so you can see what it spends and stop it at any time.

    claude mcp add --transport http hyperai https://ai.hypercluster.org/mcp \
      --header "Authorization: Bearer $HYPERAI_KEY"

    Any other agent that connects to an MCP server over HTTP with a header works the same way. Agents that only connect by signing in (OAuth), such as the connectors in claude.ai and ChatGPT, can't use it yet.

    What the agent can do:

    list_models, get_modelSee your models, where each stands, and whether it can run.
    run_modelRun one of your models on a picture (a link to it, or the picture in base64). Paid by the second, as above.
    analyze_pictureRead a picture on our AI chips. Paid per picture, as above.
    add_model_from_link, update_model, delete_modelAdd a model from a link, rename it or change its labels, delete it. Only with a key you allowed to change models.
    chat_with_model, get_chat_replyChat with one of your fine-tuned chat models. Paid by the second, as above.
    get_balanceYour HyperAI credit.

    What an agent did is in the list of calls above, marked as an AI agent’s, and in your statement.

    When something is wrong

    The answer is { "error": { "code", "message" } }, with these statuses:

    401no_key, bad_key, revokedThe key is missing, wrong or revoked.
    402insufficient_balance, key_limitTop up, or raise the key's monthly limit.
    403not_allowedThis key may run and read your models, but not add, change or delete them: allow it above.
    400, 413, 422bad_request, too_large, bad_image, model_failed, bad_link, blocked, link_failedThe request, the picture, the link or your model can't be used; the message says why.
    404, 409not_found, not_runnableNo such model among yours, or a kind of model that can't run here yet.
    429rate_limited, too_many_at_onceAt most 60 calls a minute per key and 4 at once; wait as Retry-After says.
    502, 503, 504board_failed, no_capacity, no_gpu, timeoutNone of our AI chips or members’ graphics cards could answer in time. Try again; you were not charged.

    Your pictures

    Pictures sent to our AI chips go to machines HyperCluster runs. Pictures for your own model go to a member’s graphics card with your model, and are gone from it when the run ends; the PC may keep your model, still encrypted, for up to a week, so that its next run starts sooner. We don't keep the pictures: each call's time and cost are recorded for your statement, and, for our AI chips, a fingerprint of the picture, for checking their work.

    HyperAI privacy · HyperAI terms