Skip to content
NEWNano Banana 2.1 is live — Google's latest image model, from $0.0336 per image, native 4K, about half the price of the previous generationView model
HopBase
← Back to blog

AI Video API for Europe: Kling 4.0, Seedance, Hailuo + AI Act

The short answer: a European product team can call Kling 4.0 (kling-v4), Seedance 2.5 (dreamina-seedance-2-5-260628), MiniMax Hailuo H3 (MiniMax-H3), Wan 3.0 (wan3.0-video) and Grok Imagine Video 1.5 (grok-imagine-video-1.5) through HopBase with one API key and one asynchronous pattern: submit a task, poll it, download the result within 24 hours. Kling 4.0 makes 3- to 30-second clips at 720p or 1080p, always with sound, at an official list price of $0.1471 per second at 720p. Failed tasks are not billed, and every finished task reports usage.cost_usd, the exact USD amount deducted, so you can log the real cost of each clip. Under the EU AI Act, which applies from 2 August 2026, Article 50 requires providers of generative AI systems to mark outputs in a machine-readable way and deployers to disclose deepfakes. This guide gives an engineering checklist for that; it is not legal advice, and for AI Act or GDPR questions you should contact an advisor.

What you can generate with one key

Each video family sits in its own group, and one HopBase key can include up to 10 groups, so a single key can cover all of them. Always call GET /v1/models first and use only the IDs it returns.

Model ID Length Resolutions Official list price
Kling 4.0 kling-v4 3-30 s 720p / 1080p $0.1471/s (720p), $0.2206/s (1080p); always with sound
Kling 3.0 kling-v3 per model 720p-4K from $0.08824/s (720p, silent)
Seedance 2.5 dreamina-seedance-2-5-260628 auto or 4-30 s 480p / 720p / 1080p $10.70 per 1M video tokens without video input (480p/720p), $11.70 at 1080p
MiniMax Hailuo H3 MiniMax-H3 4-15 s 768P / 2K $0.08/s (768P), $0.13/s (2K)
MiniMax Hailuo H3-Max MiniMax-H3-Max 5-15 s 480P / 768P $0.05/s (480P), $0.08/s (768P)
Wan 3.0 wan3.0-video per model 480p-1080p $0.04412/s (480p), $0.08824/s (720p), $0.1765/s (1080p)
Grok Imagine Video 1.5 grok-imagine-video-1.5 1-15 s 480p / 720p / 1080p $0.08/s (480p), $0.14/s (720p), $0.25/s (1080p)

Prices are the official list prices (snapshot 2026-10-29) shown on hop-base.com/pricing; the rate for your account is shown in the signed-in console. Worked example: a 10-second 720p Kling 4.0 clip is 10 × $0.1471 ≈ $1.47 at list price.

How to choose, briefly: kling-v4 for long single shots from text or one first frame (no reference images or multi-shot; use kling-v3 / kling-v3-omni for those); Seedance 2.5 for editing, extension and first/last-frame modes with public-URL references; MiniMax-H3-Max when turnaround matters (a 5-second clip typically renders in a few seconds); Wan 3.0 for multimodal references (first/last frames, up to 10 reference images, video and audio).

One polling loop for Kling, Seedance and Hailuo

Kling, Seedance and Hailuo share POST /v1/video/generate and GET /v1/video/tasks/{task_id}. The only differences are where the ID and status live: Seedance wraps them in task, Kling and Hailuo return them at the top level. Wan 3.0 keeps its original API paths (POST /api/v1/services/aigc/video-generation/video-synthesis, then GET /api/v1/tasks/{task_id}).

import os, time, json, requests

API = "https://api.hop-base.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['HOPBASE_API_KEY']}"}

def run(body: dict) -> dict:
    r = requests.post(f"{API}/video/generate", headers=HEADERS, json=body, timeout=60)
    r.raise_for_status()                      # any 2xx = accepted
    sub = r.json()
    task_id = sub["task"]["id"] if "task" in sub else sub["id"]
    while True:
        data = requests.get(f"{API}/video/tasks/{task_id}", headers=HEADERS, timeout=60).json()
        task = data.get("task", data)
        if task["status"] in ("completed", "failed"):
            return {"task_id": task_id, "data": data, "task": task}
        time.sleep(5)

job = run({
    "model": "kling-v4",
    "prompt": "A tram crossing a rainy Lisbon street at dusk, cinematic",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
})

record = {
    "task_id": job["task_id"],
    "model": "kling-v4",
    "status": job["task"]["status"],
    "output": (job["task"].get("outputs") or [None])[0],    # valid 24 h from completion
    "cost_usd": job["data"].get("usage", {}).get("cost_usd"),  # actual USD deducted for this clip
    "created_by": "pipeline/ad-variants",
}
print(json.dumps(record))  # keep this record next to the stored file (see checklist below)

Operational rules worth wiring in from day one:

  • Download immediately. Result URLs are signed links valid for 24 hours from completion; re-querying does not extend them, and an expired link returns 410.
  • Failures are free, but not instant. The gateway checks request structure and counts; resolution, format, size and duration are enforced during the task, so a bad asset can fail minutes after submission. Failed video tasks are not billed.
  • Balance is reserved at submit. If available balance minus in-flight estimates minus this request's estimate is short, you get 402 with insufficient_balance; the reservation is released when the task ends.
  • Time limits. A Kling task still unfinished 2 hours after creation fails without charge; a Seedance task is terminated after 24 hours. Video tasks cannot be cancelled.

AI Act Article 50: an engineering checklist

What the official AI Act text says, in summary (links to the European Commission's AI Act Service Desk are in the sources below; this is not legal advice):

  • The AI Act applies from 2 August 2026 (Article 113), and Article 50 is not among the provisions given a different date.
  • Providers of generative AI systems must mark outputs in an effective, reliable, machine-readable format so they can be detected as AI-generated or manipulated. Under Article 111(4), providers of generative systems placed on the market before 2 August 2026 have until 2 December 2026 to comply with this marking obligation (Article 50(2)).
  • Deployers must disclose deepfakes. For evidently artistic, creative, satirical or fictional work, disclosure can be made in a way that does not hamper the work.
  • The European Commission has published a voluntary Code of Practice on marking and labelling AI-generated content.

Whether your company is a "provider", a "deployer" or both depends on your product, and that is a question for your advisor. The engineering work, though, is similar either way, and it is easier to build before launch than after:

  1. Keep provenance per asset. Store the model ID, HopBase task ID, completion time and the prompt reference next to every file, as in the record above. You will need it for labelling decisions, takedown requests and audits.
  2. Don't strip what's already there. If you transcode, crop or re-mux, check that your pipeline preserves embedded metadata. This guide does not claim that any particular model's output carries machine-readable marks; inspect your own outputs with your own tooling.
  3. Add your own marking where your role requires it. If your product is the system end users interact with, plan your own machine-readable marking (for example a content-credentials manifest written at export) rather than relying on the model.
  4. Label in the UI. Show a visible "AI-generated" label wherever a clip depicts real-looking people, places or events.
  5. Visible watermarks are a separate choice. Seedance requests have a watermark field and default to no visible watermark; decide per use case.
  6. Personal data. Reference photos of real people are personal data. Seedance 2.0 requires real-person reference images to be uploaded through its asset route, and Seedance 2.5 does not accept them at all; for GDPR questions, contact an advisor before you upload anyone's likeness.

Sources

These pages are the reference; check them again before you rely on any date, because the Commission may publish further guidance.

Billing for European teams

Billing is pay-as-you-go in USD with no subscription. You can pay by Visa / Mastercard, Apple Pay, Google Pay, Alipay, AlipayHK or WeChat Pay; the top-up page shows the amount, any payment fee and the amount credited before you pay. For company invoicing, VAT handling or data-processing terms, contact an advisor through the contact page.

For per-team or per-customer budgets, issue one key per team or customer with its own spend cap, and export itemised CSV from the console Usage page for reconciliation.

FAQ

Can one API key call Kling, Seedance and Hailuo?

Yes. Each family is a separate group and a key can include up to 10 groups. Kling, Seedance and Hailuo share the same submit and poll endpoints; Wan 3.0 keeps its original paths.

What does Kling 4.0 support?

kling-v4 supports text-to-video and first-frame image-to-video, 3 to 30 seconds, at 720p or 1080p. Output always has sound, and audio=false costs the same. It does not take reference images, reference video, subjects or multi-shot storyboards.

How do I know what a clip actually cost?

When a task finishes, the single-task query returns a top-level usage object whose cost_usd is the USD amount actually deducted from your balance for that task. Failed tasks that were not charged report 0.

Do I pay for failed generations?

No. Failed video tasks are not billed, including tasks that fail because an asset did not meet the model's specs.

Does HopBase make my pipeline AI Act compliant?

No gateway can do that on its own. This guide lists engineering steps that make labelling and audits easier; whether and how Article 50 applies to your product is a question for your legal advisor.

Is data processed in the EU?

This guide makes no data-residency or GDPR commitments. If you need them, contact an advisor before sending personal data.