Skip to content

API errors

When a request fails, the HeapStream REST API responds with a non-2xx HTTP status and a JSON body describing what went wrong. Every error carries a stable machine-readable code from the list below, so you can branch on it without parsing human-readable messages.

Error response format

{
  "status": 422,
  "errors": [
    {
      "code": "value_too_large",
      "detail": "Value too large.",
      "pointer": "/max_size",
      "type": "https://docs.heapstream.com/reference/api_errors/#value_too_large",
      "location": "json"
    }
  ]
}
Field Description
status The HTTP status code of the response.
errors One or more error details (a single request can fail several validations at once).
errors[].code Stable error code — one of the values listed under Error codes.
errors[].detail Human-readable description of the problem.
errors[].pointer JSON Pointer to the offending field, query parameter, or header.
errors[].type Link to this page, anchored at the specific error code.
errors[].location Where the error originated (json, query, path, or header).

Error codes

account_suspended

account suspended, negative balance, please credit account

cant_delete_default_audio_track

Default audio track cannot be deleted.

cant_delete_default_object

Default object cannot be deleted.

cant_delete_embedded_audio_track

Embedded audio track cannot be deleted.

cant_delete_source_with_clips

Cannot delete: this video has clips that reuse its segments. Delete the clips first.

cant_modify_fastclip

This operation isn't allowed on a fast clip; fast clips are fixed except for metadata.

cant_swap_same_video

A video can't be swapped with itself; pick a different video.

duration_too_small

Duration of the clip is too small.

end_date_before_start_date

end_dt must be greater than or equal to start_dt.

end_date_is_bigger_than_today

Not a valid date.

end_percent_not_after_start_percent

end_percent must be greater than start_percent.

end_time_too_big

End time is bigger than duration {end_time}.

Message parameters: end_time

endpoint_not_exists

Endpoint doesn't exist.

head_request_to_url_failed

Cannot make HEAD request to url

internal_error

Internal error.

invalid_api_key

Invalid api key.

invalid_bcp47_lang_code

Language is not valid BCP 47.

invalid_filename

Filename must not contain control characters.

invalid_image_file

An image file is required.

invalid_page_format

The format of the page is invalid.

invalid_png_file

Image must be valid PNG.

invalid_subtitle_file

File must be a valid vtt or srt subtitle.

key_id_invalid

Invalid key id.

max_date_range

maximum_date_range_reached of 365 days. Please contact support if you need to increase the limit

max_keys_reached

Maximum number of keys reached.

max_projects_reached

Maximum number of projects reached.

missing_auth_header

Missing auth header.

no_caption_track

The video has no caption track to generate chapters from.

no_such_key

No such key exists.

no_such_upload_id

No such upload_id exists.

non_empty_extension

Filename must have a non-empty extension.

not_enough_storage

This needs {needed} of free storage but only {free} is available.

Message parameters: needed, free

not_project_owner

Not project owner.

one_active_chapter

Only 1 active chapter is possible.

poster_already_default

Poster is already the default.

rate_limit_reached

Rate limit reached.

resource_not_exists

Resource not found.

schema_empty

You need to set at least 1 attribute.

start_time_too_big

Start time is bigger than duration. start_time={start_time}

Message parameters: start_time

stop_seconds_out_of_range

stop_seconds must be 0 (play whole segments) or between 0.5 and 10.

text_track_invalid_type

Text track type should not be Chapter.

too_many_posters

You have reached the maximum number of posters for this video.

upload_quota_reached

upload quota reached, please upgrade your plan or contact support

value_too_large

Value too large.

Message parameters: max_size

video_errored

Video failed to download or encode.

video_no_audio

Video has no audio streams.

video_not_ready

Video is not yet in ready state.

videos_need_status_completed

Status of the videos must be completed.

webhook_already_exists

Webhook already exists.

webhook_limit_reached

Webhook limit reached.