Errors

Every error is an RFC 9457 problem with code, detail, remedy and, when one argument is at fault, field (in the names this API uses). Read code and follow remedy. A refusal is not an error: it is an answer with state: "refused" (The answer state).

This page is generated from the source (npm run docs:build); "…" stands for the value in your request. The engine's own codes, such as row_not_scoreable and model_ref_missing, arrive in the same form with their own remedy; Ship a product covers the ones a scheduled job meets.

Retry only rate_limited (after retry_after_ms) and the 502, 503 and 504 statuses; the SDKs do this for you on calls that are safe to repeat.

Code HTTP Means What to do
answer_expired 410 This … belongs to an answer that is no longer kept (answers are kept 24 hours). Ask again. The fit is cached by the record's content, so the same record does not fit again.
columns_differ 422 These columns are not in the dataset: …. Send rows with the dataset's columns: ….
concurrent_append 409 Rows were still being added to this dataset. Ask again once the appends have finished.
csv_empty 422 The first piece has a header but no rows. Upload a CSV with at least one row.
csv_unreadable 422 The CSV has an unterminated quoted field. Check the file's quoting and resend.
cursor_invalid 422 This cursor is not one Datagoat issued to this workspace, or it was altered. Pass page.next_cursor exactly as the previous response gave it.
dataset_awaiting_upload 409 This dataset's upload is still in progress (… piece… so far). Wait until the upload page says the upload is done, then ask again.
dataset_sealed 409 This dataset has been asked about or preflighted, so it takes no more rows. Create a new dataset for the new rows (a changed table is a new record), then ask with refit_of to link the two.
delete_failed 503 The dataset's rows could not be deleted from storage just now; nothing was changed. Retry dg_delete_dataset. The dataset is also deleted automatically 24 hours after its last use.
engine_outdated 503 The analysis engine does not serve ask yet. Datagoat is being updated. Retry in a few minutes.
engine_unavailable 502 The analysis engine refused the platform's credential. This is a Datagoat configuration fault, not your request. Retry later.
fetch_failed 422 Could not download …. Check the URL is reachable from the public internet.
fetch_header_refused 422 The header … may not be set. Remove it and resend.
fetch_redirect_refused 422 fetch_url redirected; redirects are not followed. Send the final URL.
fetch_too_large 413 The file is larger than … bytes. Use dg_add_dataset with upload: true for large files.
fetch_url_invalid 422 fetch_url is not a URL. Send a full https URL.
fetch_url_refused 422 fetch_url must use https. Serve the file over https.
fetch_url_unresolvable 422 … does not resolve. Check the host name.
horizon_budget_exhausted 422 … Ask again at a horizon already tried on this record, or choose the horizon from what the outcome means before reading. Trying horizons until one clears manufactures a finding.
idempotency_conflict 409 This idempotency_key was used for a different request. Use a new idempotency_key for a new request.
internal 500 … Retry. If it persists, contact support with the request_id.
invalid_request 422 … Fix the argument named in field (or in detail) and resend. Retrying unchanged returns the same answer.
lever_token_invalid 422 This lever_token is not one Datagoat issued, or it was altered. Pass lever_token exactly as it appeared in the answer's levers.
missing_credential 401 This connection is not signed in. Reconnect Datagoat and sign in, or send a dgk_ key as a Bearer token.
model_outcome_unknown 422 Datagoat has no record of the outcome column … learned, and a traces reading needs it. Ask once with the model's record and its outcome_column (the fit is reused), then ask by model_ref again.
model_readings_differ 422 These models were fitted on records read with different columns, so one reading of this record cannot serve them all. Ask about each model in its own call.
namespace_ambiguous 422 These models belong to different namespaces: …. Ask about each namespace's models in its own call.
namespace_mismatch 422 … belongs to …, not namespace "…". Send namespace "…", or omit namespace: follow-up calls find a model's namespace themselves.
option_column_missing 422 "…" is not a column of the data. Name a column of the data.
outcome_column_missing 422 "…" is not a column of the data. Name one of: ….
outcome_constant 422 "…" holds a single value (…), so nothing can be learned about it. Name an outcome column that holds both yes and no cases.
outcome_not_binary 422 "…" has more than 12 distinct values, so it is not a yes/no outcome. Name a column with two values, or pass positive_values listing the values that mean yes.
payment_past_due 402 The last payment for this workspace failed. Add a card at https://datagoat.io/billing, or use a sample.
payment_required 402 Asking about your own data needs a card on file. Add a card at https://datagoat.io/billing, or use a sample.
piece_empty 422 This piece has a header but no rows. Send only pieces with rows.
piece_index_invalid 422 index must be a whole number from 0 to …. Send pieces in order from 0.
piece_out_of_order 409 The next piece this dataset expects is …. Send piece … next.
piece_too_large 413 A piece is at most … bytes. Split the file into smaller pieces.
positive_values_differ 422 The option outcome columns use different values for yes. Pass positive_values naming the yes value(s) they share.
positive_values_required 422 Datagoat cannot tell which value of "…" means yes. Its values are: …. Pass positive_values, e.g. ["…"].
post_value_unreadable 422 The new value can't be compared with the lever's target. Send post_value in the record's units: a number for a numeric feature, a category for a categorical one.
profile_unavailable 422 Datagoat has not seen this table's values (it went straight to storage through upload_url), so it cannot list candidate questions. Store the table with rows, csv, fetch_url or the upload page, then call dg_suggest again.
rate_limited 429 This workspace has used its requests for this minute. Wait … second… (retry_after_ms) and send the call again.
scope_required 403 This credential lacks the … capability. Issue a live key with "Can report outcomes" at https://datagoat.io/keys, or sign in over OAuth.
shape_empty 422 Reading the record as this shape left nothing to ask about: …. Check the shape's columns and windows against the data (the log may span less time than the windows need), or ask about the record as a table.
shape_invalid 422 "…" is not a column of the snapshot table. Name a column of shape.snapshots. Its columns: ….
subscription_canceled 402 This workspace's subscription has ended. Add a card at https://datagoat.io/billing, or use a sample.
task_lost 504 The task stopped reporting and will not finish. Send the call again; the same idempotency_key runs it again. Nothing was billed for this one.
test_key_samples_only 403 A test key (dgk_test_…) may ask about the free samples only. Use a sample (dg_describe lists them), or create a live key at https://datagoat.io/keys.
unknown_dataset 404 There is no sample "…". Use one of: ….
unknown_link 404 This upload link is not one Datagoat issued, or it was altered. Use the link exactly as dg_add_dataset gave it.
unknown_operation 404 There is no operation /v1/…. See https://api.datagoat.io/openapi.json, or POST /v1/describe.
unknown_task 404 No task "…" in this workspace. Poll the task_id the original call returned.
upload_exists 409 This dataset already holds a finished upload. Ask about it by its dataset_id, or call dg_add_dataset with upload: true for a new link.
upload_incomplete 409 … of … pieces have arrived. Send piece … next.
upload_link_expired 410 This upload link has expired (links last one hour). Call dg_add_dataset with upload: true again for a new link.
upload_restarted 409 This upload was started over from another page or file. Keep the newer upload, or choose the file again here to start over.
upload_session_invalid 422 Each piece carries the upload session id the page chose (32 hex characters). Upload from the page.