Help
Troubleshooting
Error code to cause to fix, for every error the engine returns. Plus the things that look broken and are not: a building genome index, an empty commons, a run that vanished after a deploy.
Updated 31 July 2026
All documentation
Every error carries a kind alongside its HTTP status, so the cause is
identifiable without reading the message. The tables below map both to what to
actually do.
Sign-in and access
| Status | kind |
What happened | Fix |
|---|---|---|---|
| 403 | signin_required |
CRISPR, primer analysis, the plasmid editor and every save endpoint need an account. There is no trial on these. | Create a free account. The response carries a signup_url tagged with where you came from. |
| 402 | auth_required |
Your 5-minute anonymous trial expired. Applies to directed evolution and the agent. | Sign in. 402 rather than 401 because you are welcome to use it — you just need an account. |
| 403 | forbidden |
The job or agent run belongs to a different account. | Re-run it under your own account. |
| 403 | consent_required |
You asked for an NCBI specificity scan without consenting to send the sequence. | Tick the consent box. This step transmits your primer sequences to NCBI, so it is off by default. |
Chatting is free, running is not
Talking to Turing costs nothing and needs no account. The moment it calls a tool, the tool’s own access rule applies.
Input rejected
| Status | kind |
What happened | Fix |
|---|---|---|---|
| 400 | validation |
A setting is out of range or a field is empty. | The message names the field and the accepted range. |
| 400 | needs_cds_choice |
You uploaded a plasmid or multi-CDS record. The engine refuses to guess which coding sequence you meant. | Pick one from the cds_options list it returns. |
| 400 | input_too_large |
CRISPR sequence over 1 Mbp. | Paste the gene or region, not the chromosome. |
| 413 | — | Local-specificity genome file over 12 MB. | Use a bacterial or small eukaryotic genome. |
| 422 | bad_organism, bad_symbol |
The organism or gene symbol is not one the resolver recognises. | Check spelling, or paste the sequence directly. |
Sequence validation is more specific than a generic “invalid input”. Each of these names the offending nucleotide position:
| Message | Cause |
|---|---|
invalid_char |
A character outside the accepted alphabet |
bad_length |
Not a multiple of 3, so it cannot be translated as a CDS |
no_start / no_stop |
Missing the expected start or stop codon |
premature_stop |
A stop codon inside the reading frame |
| Ambiguous IUPAC codes | ESM-2 scoring needs a fully determined wild type — N, R, Y and friends have to be resolved first |
"Sequence is only N nt after cleaning"
Almost always protein pasted into a DNA field. The CRISPR input strips
everything outside ACGTN, so an amino-acid sequence survives only as its
stray A, C, G, T and N letters — usually a handful of characters.
Timing and state
| Status | kind |
What happened | Fix |
|---|---|---|---|
| 409 | — | You asked for a result before the job finished. | Poll status until it reads done. |
| 410 | — | Upload session or agent run expired. Both live 6 hours. | Re-upload, or start a new conversation. |
| 410 | run_expired |
The run was in memory when the engine restarted. | Expected after a deploy. The chat starts a fresh run automatically. |
| 429 | rate_limited |
Endpoint rate limit hit. | Wait the number of seconds in the Retry-After header. See rate limits. |
| 503 | lookup_failed |
Ensembl, UniProt or NCBI was transiently unavailable. | Retry. This is explicitly not “gene not found” — the lookup itself failed. |
Looks broken, is not
The genome column is empty and there is a “check again” banner. The index for that organism is building. First use costs roughly one second per megabase — seconds for E. coli, around three minutes for human. Guides are still correct; they simply have no genome data yet. Re-run once it finishes.
A number changed between two runs of the same sequence. Genome off-target data appears once the index exists, which changes the composite score. On-target scores themselves are deterministic.
Only ten guides have genome off-target data. By design — the top ten ranked guides are screened, because each genome query costs a few seconds. Everything else shows input-CFD only.
The Field Atlas shows a small number and zero from platform labs. That is the honest cold start: the commons holds substitutions from published DMS studies and none yet contributed by platform users. The two counts are tracked separately and must never be added together.
A running job vanished. The engine runs one worker with in-memory job state, so a deploy ends anything in flight. Saved designs live in the database and are unaffected.
Turing says a capability is not configured. The agent needs an OpenRouter key. Where it is absent the agent says so instead of inventing an answer, and every tool still works through its own view.
A base edit installed more changes than expected. Bystanders. Every base of the same type inside the activity window is a candidate, not only the one you targeted. The engine flags them; see the activity window.
Still stuck
Email info@turingdna.com, or use the contact page. Including the
kind from the error and what you pasted makes it much faster to answer.