Skip to content

Error codes

Every error response from the upstratus API has the same JSON shape: a code from this list, a message written for a person, an optional machine-readable detail, and a remedy_url that points at the code's entry on the live error reference, /docs/errors/#<code>. This page is the same table, generated from the same catalogue.

{"code": "invalid_json", "message": "...", "detail": null, "remedy_url": "/docs/errors/#invalid_json"}

There are 174 codes.

Code What it means What to do
access_denied The person denied the sign-in, or the account cannot sign in. Start again with a new code if it was a mistake.
account_incomplete This account has not confirmed an email address and a mobile number yet. Open detail.next in a browser and confirm the steps listed in detail.missing; API keys are not affected.
alias_starts_with_symbol A roster alias starts with = + - or @, which a spreadsheet reads as a formula. Rename that student, for example by adding a letter first, and import again.
already_finalized The sample has already been completed or rejected. Create a new sample instead of completing this one again.
already_invited That address already has a pending invitation. Use Resend on the pending invitation instead of inviting again.
already_joined That student has already joined with their code, so their seat has no code to replace or revoke. Nothing to do: the student can sign in with the password they chose.
already_member That person is already a member of this organisation. Nothing to do; change their role from the member list if needed.
authorization_pending The person has not approved the sign-in in their browser yet. Keep polling /auth/device/token at the interval you were given.
axis_value_out_of_range A row has a value that is not a finite number. Remove infinities and NaN on the row named.
billing_unavailable Live billing is not enabled on this deployment. Use test mode, or contact the operator.
blob_no_longer_matches_import The uploaded file changed after the import was validated. Start the import again with the file you intend.
blob_not_found No upload exists at the sample's storage key. PUT the payload to the presigned URL first, then call complete.
board_sizes_not_supported_for_model_block Board sizing is not available for this model. Use a supported model.
budget_too_small The budget cannot cover even the cheapest trial. Raise the budget.
cannot_recompute_sizes Board sizes could not be recomputed. Retrain the recipe, then retry.
captcha_failed The security check on the sign-in form did not finish. Wait for the check to complete in the browser, then sign in again. API clients should use an API key instead.
code_busy Another change to this student's join code was made at the same moment. Reload the Classroom page and try again.
column_reused The label and group columns are the same. Choose two different columns.
conformance_build_failed The model's reference build failed. Retrain and retry; if it persists, report it with the message.
conformance_not_supported This model cannot be conformance-tested on a bench. The bench compares class ids; use a classifier.
cross_project_diff The two versions belong to different projects. Compare versions from the same project.
cursor_filter_mismatch The cursor was issued for different filters. Repeat the same filters you used for the first page.
dataset_in_use A model was trained on this dataset, so it is kept as a record. Archive it instead of deleting it, or duplicate it to change its cleaning.
dataset_name_taken Another dataset of this project already has that name. Choose a different name.
deployment_failed This deployment is marked failed. Use Deploy again to start a new deployment.
description_invalid The description is not text. Send text.
description_required No description was given. Describe the project in a sentence.
description_too_long The description is too long. Shorten it to the stated limit.
device_code_expired The code on the approval page has expired. Start signing in again in the app to get a new code.
device_code_unavailable A sign-in code could not be issued just now. Try again in a moment.
device_code_used The code on the approval page was already approved or denied. Start signing in again in the app if you still need to.
device_mismatch This session is already connected from another device. Start a new session from the desktop to connect a different phone.
duplicate_alias Two students share an alias. Make every alias unique within the class.
duplicate_axis_column A column is listed twice as an axis. List each axis column once.
duplicate_too_large The project has more recordings than one duplicate can copy. Duplicate without recordings, or export the recordings first.
email_not_confirmed This sign-up has not confirmed its email address. Open detail.next and enter the 6-digit code we emailed you; Resend is on that page.
empty_group_key A row's group value is empty. Fill the group column on the row named, or choose another column.
expired_token The sign-in request expired before it was approved (10 minutes). Ask for a new code and show it again.
explorer_not_supported_for_block The data explorer works on photo features only. Open the explorer on a vision project.
feature_computation_failed Features could not be computed from the samples. Check the samples are complete and readable, then retry.
fit_not_supported_for_dsp_block Fit is not available for this feature block. Choose a supported block.
fit_not_supported_for_model_block Fit is not available for this model. Choose a supported model.
grid_locator_needs_greyscale Grid Locator works on greyscale photos. Set Colour to greyscale.
idempotency_key_conflict This Idempotency-Key was used for a different request. Use a fresh key for a different request, or resend the original.
inconsistent_target Rows of one recording carry different target values. Give every row of a recording the same target.
invalid_action The bulk action is unknown. Use relabel or delete.
invalid_against against is not an integer id. Send the id of the model version to compare with.
invalid_api_key The API key is unknown or has been revoked. Create a new key under Account → API keys and send it as a Bearer token.
invalid_archived archived must be true or false. Send exactly true to archive or false to restore.
invalid_bench_key The hardware bench key is unknown or revoked. Issue a new bench key and restart the bench client with it.
invalid_body_shape The JSON body is not an object. Wrap the fields in a single JSON object {...}.
invalid_box The box geometry is not valid. Use fractions 0–1 with a positive size inside the image.
invalid_budget The GPU-minute budget is not above zero. Set a positive budget.
invalid_bytes bytes is negative. Send the real object size in bytes.
invalid_class_counts Class counts must be positive integers. Send positive integers.
invalid_cleaning A dataset cleaning step is unknown or has a wrong setting. Fix the step the message names; the screen shows the allowed steps.
invalid_client_name The app name is not plain text of at most 80 characters. Send a short name such as Upstratus desktop.
invalid_combination Two filters contradict each other. Remove label or unlabeled=true.
invalid_copy Cannot copy boxes from the same image. Choose a different source image.
invalid_credentials The username or password was wrong. Check both and try again; passwords are case-sensitive.
invalid_cursor The paging cursor is malformed. Start again without a cursor and follow next_cursor from each response.
invalid_description The description is not text, or is too long. Send text of at most the stated length.
invalid_device_code The device code is unknown or was already exchanged for a token. Start again from /auth/device/code; each code works once.
invalid_dsp_params A feature parameter is out of range. Use values within the ranges shown on Design.
invalid_email The address is not a valid email address, or is too long. Send a single address such as name@example.com.
invalid_ended ended must be true or false. Send exactly true when the session is over.
invalid_event That funnel event cannot be reported by a client. Report only an event listed in the message; the server records the others itself.
invalid_fit_params The Fit request is missing required fields. Send model_block and labels.
invalid_ids ids is not a list. Send a JSON list of sample ids.
invalid_include_recordings include_recordings must be true or false. Send true to copy the recordings too, or false.
invalid_join_code The join code is wrong or was already used. Check the code on the printed sheet; ask the teacher for a new roster import if it was used.
invalid_json The request body is not valid JSON. Send well-formed JSON with Content-Type: application/json.
invalid_label The label is empty or not text. Send a non-empty string label.
invalid_limit limit is below 1. Send 1 or more.
invalid_modality The modality is not one this product supports. Use one of the values listed in detail.known_modalities.
invalid_model_hparams A model setting is out of range. Use values within the ranges shown on Design.
invalid_name The name is empty or not text. Send a non-empty string.
invalid_notes The notes are not text, or are too long. Send text of at most the stated length.
invalid_offset offset is negative. Send 0 or more.
invalid_org org_id is missing, is not a number, or is not an organisation you belong to. List yours with GET /orgs/mine and send one of those ids.
invalid_percentile The threshold percentile is out of range. Choose a percentile within the range in the message.
invalid_project The project id is not an integer. Send the numeric project id.
invalid_qat_flag qat is not true or false. Send a JSON boolean.
invalid_rejected rejected must be true or false. Send exactly true or false.
invalid_result A bench result was not a JSON object. Report a JSON object.
invalid_results The Monitor results were malformed or too many at once. Send up to the stated number of results with index, expected, got and latency_ms.
invalid_role The role is not one this action can set. Invite as admin or member; an owner can set owner, admin or member on an existing member.
invalid_serial_number The serial number is not text. Send the serial number as text, or leave it out.
invalid_signature The webhook signature did not verify. Resend from the payment provider with the correct signing secret.
invalid_since_seq since_seq is negative. Send 0 or more.
invalid_spec The project document could not be applied. Fix the line named in detail.line; nothing was saved.
invalid_state The deployment state is not one of planned, packaged, flashed, verified or failed. Send one of those states.
invalid_target The target is not a finite number. Send a number, or null to clear it.
invalid_token The app sign-in token is unknown or has been revoked. Sign the app in again; the person can also revoke it from Account.
invalid_unlabeled unlabeled must be true or false. Send exactly true or false.
invitation_required Creating an account needs an access key. Request an invitation at /alpha/request/; the key is emailed to the address you request it with.
invite_closed That invitation was already accepted or revoked. Invite the person again if they still need to join.
invite_expired That invitation expired (they last 7 days). Ask an owner or admin to resend it; the old link then stops working.
invite_limit Too many invitations, or this one was sent a moment ago. Revoke old invitations, or wait the time in the message, then try again.
invite_revoked That invitation was withdrawn by the organisation. Ask them to send a new invitation.
invite_used That invitation has already been used. The person is already in the organisation; sign in to continue.
job_not_claimed The bench no longer holds this job's lease. Stop work; the job was reassigned.
job_not_done The training job has not finished. Wait until it is Done.
last_owner An organisation must keep at least one owner. Make someone else an owner first, then try again.
lease_lost The lease expired before the result arrived. Stop work and claim a new job.
missing_against ?against= is required. Add ?against=<model_version_id>.
missing_bench_key A bench request carried no key. Send Authorization: Bearer <bench key>.
missing_field A required field is missing or empty. Add the field named in the message.
missing_user_agent The connecting client sent no User-Agent. Open the link in a normal browser.
modality_mismatch The block does not support this project's data type. Choose a block marked for the project's modality.
monitor_not_available Live checking is not available for this model version. Read the message: some model types answer with a score or map the check cannot compare yet.
no_axis_columns No axis columns were chosen. Choose at least one numeric column.
no_blob The sample has no stored recording. Re-record or re-import it; there is nothing to download.
no_boxes_labelled Grid Locator needs at least one drawn box. Open Label, View a photo and draw a box around each object.
no_modality The project has no data type chosen. Choose what kind of data the project holds.
no_recipe_to_recompute_from The version has no recipe to rebuild from. Train a new version from a recipe.
no_samples The project has no labelled data. Record and label data first.
no_samples_to_size_from There are no complete samples to size from. Record samples first.
no_sizes_to_recompute The version has no real training run to size. Train it first.
non_numeric_value A row has a non-numeric axis value. Fix the value on the row named.
normal_label_not_found No complete recordings carry the chosen normal label. Pick a label that has recordings.
not_a_classifier_job Explanations exist only for classifier models. Use a classifier job.
not_a_manager Only an owner or admin of the organisation can do that. Ask an owner or admin, or switch to an organisation you manage.
not_a_vision_project Bounding boxes exist only on photo projects. Use a vision project.
not_allowed_for_students A student account in a classroom cannot change the plan or the roster. Ask the teacher who manages the classroom.
not_an_anomaly_model Only anomaly detectors have a threshold. Use an anomaly model version.
not_an_education_org This organisation is not a classroom. Sign up as a classroom to use rosters.
not_an_owner Only an owner can change roles. Ask an owner of the organisation to make the change.
not_complete The import has not finished validating. Wait for it to complete, then apply it.
not_found An id does not exist in your organisation. Reload the list and use ids from it.
not_removable That member cannot be removed by you. Admins can remove members, not owners or other admins; classroom seats are managed from the roster.
nothing_to_change The request named no field to change. Send at least one of the fields the message lists.
nothing_to_copy The source image has no boxes. Pick an image that has boxes.
pii_column_refused The roster has a column that holds student personal data. Remove the named column; a roster takes only alias and group.
preview_not_supported_for_block This block has no preview yet. Choose a block with a preview, or continue without.
qat_not_applicable Quantisation-aware retraining does not apply to this model. Only classifier models have it; omit qat.
quota_exhausted Your plan's allowance for this resource is used up. Wait for the next period, or upgrade the plan under Account.
rate_limited Too many attempts from this address in a short window. Wait the number of seconds in Retry-After, then retry.
request_required No request text for the snippet. Describe what to add or change.
request_too_long The request is too long. Shorten it to the stated limit.
reserved_box_class A box class uses the reserved name for 'no object'. Rename those boxes.
roster_needs_alias The roster has no alias column. Make the first row alias,group (group optional).
roster_too_large The roster has more students than a class holds. Import the class in smaller files.
run_already_active An Autopilot run is already in progress for this project. Wait for it, or stop it.
session_ended This Monitor session has already ended. Start a new session to record more results.
short_code_exhausted Could not allocate a collect-session code. Retry in a moment; if it persists, report it.
slow_down The app polled faster than the allowed interval. Wait the larger detail.interval seconds between polls from now on.
spec_changed The project changed after you opened the YAML. Copy your edits, choose Undo my edits to load the latest, and apply them again.
state_backwards A deployment only moves forward. Leave it as it is, or start a new deployment with Deploy again.
storage_unavailable The recordings could not be copied in storage, so nothing was duplicated. Try again in a minute, or duplicate without recordings.
targets_missing Some recordings have no target value. Set a target on each recording on the Label screen, then train.
token_expired The QR code has expired. Show a fresh QR code on the desktop and scan it again.
token_invalid The QR code is no longer valid. Show a fresh QR code on the desktop and scan it again.
too_few_normal_sessions Too few separate sessions of normal data. Record more separate sessions of the normal label.
too_few_sessions Too few separate sessions to hold one out. Record more separate sessions.
too_many_boxes The image already holds the maximum number of boxes. Delete a box before adding another.
too_many_ids More ids than one request may carry. Split the request into batches under the stated maximum.
unknown_board The board id is not a supported board. Use an id from the board list.
unknown_column A named column is not in the uploaded file. Pick columns from the list the import showed.
unknown_device That board is not registered in your workspace. Add it under Devices first, then choose it.
unknown_dsp_block The feature block name is not known. Pick one from the Design screen.
unknown_model_version That model version is not part of this project. Pick a version listed under Evaluate for this project.
unknown_plan The plan is not one that can be purchased. Choose a paid plan from the plan list.
unknown_project That project is not in your workspace. Pick a project from your project list.
unsupported_anomaly_features Anomaly detection needs window-statistics features. Choose Window statistics.
unsupported_board_for_snippet Integration examples exist only for some boards. Choose the Nano 33 BLE or the ESP32-S3.
unsupported_kind The import kind is not supported. Use a supported import kind (CSV).
unsupported_recipe These features and this model cannot be trained together yet. Pick one of the pairs in detail.trainable_recipes in Design.
unsupported_regression_features Value prediction needs window-statistics features. Choose Window statistics.
username_taken That username already exists. Choose another, or sign in if the account is yours.
value_too_long A value is longer than the field allows. Shorten it to the maximum in the message.
weak_password The password does not meet the password rules. Use a longer, less common password; the sign-up form lists the rules.
webhook_not_configured The webhook secret is not configured on the server. Operator: set STRIPE_WEBHOOK_SECRET.
wrong_account This invitation was sent to a different email address than the account you are signed in with. Sign out and sign in (or sign up) with the invited address.