The PixVerse API rate limit is not a rate. The page the vendor publishes constrains how many generations may be in flight at once, and the requests-per-second figure that search results offer belongs to a reseller gateway. Everything below comes from that page, the error table, and the troubleshooting page that explains the remedy.

What the rate-limit page publishes

The page opens with one sentence, and it never mentions speed.

Different concurrent requests are provided based on membership level.

Below it sits a two-column table headed Membership Type and Concurrent Requests, and one footnote defining the term: Concurrent Requests: Maximum number of simultaneously generating tasks. To get more, the page says upgrade/purchase membership, or write to api@pixverse.ai.

One table, one footnote

The absence of a rate is testable.

# Ask the vendor page itself whether any per-second wording exists.
curl -s 'https://docs.platform.pixverse.ai/rate-limit-796040m0' \
  | grep -o -i -E 'per (second|minute)|rps|rpm|requests per' | sort -u
# prints nothing: the page constrains simultaneous tasks, not a rate

The table and the footnote come back. No requests-per-second, requests-per-minute or daily figure does. Until somebody quotes that URL for a rate, “PixVerse allows N requests per second” describes a different service.

A summary that promises more

The documentation site also runs a machine-readable index describing the rate-limit page as covering Per-account request and concurrency limits. The page that link opens publishes concurrency only. The page wins, because it holds the numbers, and that index sentence explains why secondhand write-ups promise a request limit with no figure attached.

Concurrency versus requests per second

Side-by-side comparison showing a concurrency ceiling as three occupied worker lanes turning a fourth job away, and a requests-per-second limit as a token bucket accepting a burst until the bucket empties

What each one throttles

A rate limit counts arrivals. A concurrency ceiling counts occupancy. Under a per-second limit a job is charged to the second it arrived and stops mattering after that. Under the PixVerse model the account holds a slot for the entire render, and the slot returns only when the task leaves generating.

Why the slot is the unit

A long render costs capacity in proportion to its wall-clock time, so fifteen-second clips and five-second clips draw on the same ceiling very differently. A hung task keeps its slot, because nothing in the documented surface releases it early.

Requests per secondConcurrent in-flight jobs
What is countedArrivals in a windowTasks in generating state
What a burst doesRejects part of the burstAccepts until the ceiling, then rejects
What a long job costsNothing extraOne slot for its whole runtime
Published by PixVerseNoYes, per membership tier

Tiers and error 500044

The published tiers

MembershipFreeEssentialScaleBusiness
Concurrent Requests3152025

Free allows three simultaneously generating tasks: a statement about overlap, not volume. No daily cap is published, and a credit pack does not move this number, because the ceiling follows the membership.

Releasing a stuck slot

The troubleshooting page names the cause in one clause: you have exceeded the number of videos allowed to be in "generating" status according to your current plan. Then it adds the detail no other page carries. A video that has been generating for a long time should be left alone for ten minutes, because tasks unfinished by then have their slot released automatically.

No cancel endpoint is documented, so retrying harder is the wrong response. Wait out the ten minutes, or start fewer tasks.

# Persist one submit response, then read only the fields that decide your next move.
curl -s --request POST 'https://app-api.pixverse.ai/openapi/v2/video/text/generate' \
  --header "API-KEY: ${PIXVERSE_API_KEY}" \
  --header "Ai-trace-id: $(uuidgen)" \
  --header 'Content-Type: application/json' \
  --data-raw '{"aspect_ratio":"16:9","duration":5,"model":"v6","motion_mode":"normal","prompt":"a slow dolly across a wet street at dusk","quality":"720p","seed":0}' \
  > /tmp/pixverse-submit.json

jq -r '.ErrCode, .ErrMsg, (.Resp.video_id // "no id")' /tmp/pixverse-submit.json
# ErrCode 500044 means the account already holds its full quota of generating videos

Handling 500044 in code

Backpressure, not failure

Two habits keep an integration inside the ceiling: read 500044 as backpressure rather than failure, since the request was valid; and poll slowly, since the vendor index recommends every 3–5s.

# Submit with backoff, and never mint a second job while the ceiling is full.
submit() {
  local body="$1" response code
  response=$(curl -s --request POST \
    'https://app-api.pixverse.ai/openapi/v2/video/text/generate' \
    --header "API-KEY: ${PIXVERSE_API_KEY}" \
    --header "Ai-trace-id: $(uuidgen)" \
    --header 'Content-Type: application/json' \
    --data-raw "$body")
  code=$(jq -r '.ErrCode' <<<"$response")
  case "$code" in
    0)      jq -r '.Resp.video_id' <<<"$response" ;;
    500044) echo 'ceiling full, waiting for a slot' >&2; sleep 60; submit "$body" ;;
    500090) echo 'insufficient balance' >&2; return 1 ;;
    *)      echo "submit failed with $code" >&2; return 1 ;;
  esac
}

Resubmitting the same prompt on 500044 is the one pattern guaranteed to make things worse. The ceiling counts tasks, not attempts, so a rejected submit consumes nothing and frees nothing.

# Poll the documented status endpoint until the task leaves status 5.
video_id="$1"
while :; do
  response=$(curl -s \
    "https://app-api.pixverse.ai/openapi/v2/video/result/${video_id}" \
    --header "API-KEY: ${PIXVERSE_API_KEY}" \
    --header "Ai-trace-id: $(uuidgen)")
  status=$(jq -r '.Resp.status' <<<"$response")
  case "$status" in
    1) jq -r '.Resp.url' <<<"$response"; break ;;
    5) sleep 4 ;;
    7) echo 'moderation failure, credits refunded' >&2; break ;;
    8) echo 'generation failure' >&2; break ;;
    *) echo "unexpected status $status" >&2; break ;;
  esac
done

Status 6 appears in the vendor index as deleted and not on the endpoint page, so a client built from the endpoint page alone logs it as unexpected.

Whose per-second number is it

A reseller gateway is not PixVerse

Search the keyword and the pages that mention a rate are resellers. One cloud gateway documents a default of twenty requests per second for its own job-query API; another publishes its own queued / processing / success / failed / cancelled lifecycle. Both resell PixVerse models, and neither number is a PixVerse limit.

Through a gateway you have two ceilings and the smaller one binds. A gateway rejects the call outright; PixVerse answers with a well-formed payload carrying 500044. Code 500069 is not a quota either, and it wants a longer, jittered retry.

Sizing a batch against the ceiling

Waves, not requests

Concurrency decides wall-clock time. Divide the job count by the ceiling for the wave count, then multiply by the render time you observe, which the vendor does not publish.

# Published ceiling in, wall-clock estimate out.
clips=120            # shots the project needs
seconds_per_clip=90  # your own observed average
concurrency=15       # Essential, per the rate-limit page
waves=$(( (clips + concurrency - 1) / concurrency ))
printf '%s clips at %s concurrent = %s waves\n' "$clips" "$concurrency" "$waves"
printf 'first-pass estimate: about %s minutes\n' "$(( waves * seconds_per_clip / 60 ))"

That ignores retries, moderation failures and the ten-minute release window, all of which push the finish line out. Add your own retry rate before promising a date, and read the per-second credit rates alongside the wave count, since together they decide what the project costs. The API guide covers the headers this article assumes, and the image-to-video chain takes an extra call first.

Frequently asked questions

Does the PixVerse API have a requests-per-second limit? Not published by the vendor. The rate-limit page publishes simultaneous generating tasks only, three on Free through twenty-five on Business.

What does error 500044 mean? Reached the limit for concurrent generations. The account already holds as many tasks in generating state as its membership allows.

How long does a stuck slot stay occupied? A task unfinished after ten minutes has its generating slot released automatically, per the troubleshooting page.

Do credits raise the ceiling? No. The table is keyed to membership tier, and a credit pack is a separate purchase from an API membership.