Error codes
Every failure the API returns carries an SS-nnn code. The number says which part of the system refused, so a screenshot from a clinic is enough to locate the problem without asking for logs.
| Range | Module |
|---|---|
SS-0xx | unclassified / catch-all |
SS-1xx | scan intake — upload, cleaning, alignment, measurement |
SS-2xx | socket geometry — shell, trimline, adapter, analysis |
SS-5xx | unhandled server error |
SS-6xx | clinical and commercial layer — wallet, admin, cases, insoles |
Within SS-6xx:
| Range | Area |
|---|---|
SS-62x | boolean engine / optional dependency |
SS-63x | wallet: balance, charge codes |
SS-65x | patients and cases |
SS-66x | admin panel |
SS-67x | socket finalization and export |
SS-68x | insole clinical records and production |
The ones worth knowing
| Code | Meaning | What to do |
|---|---|---|
SS-106 | file not found | Also the answer when the file exists but no record of this clinic points at it: storage is shared by content, and a file is served only through a record its reader owns. |
SS-120 | not a client event | The browser may file only the actions that happen in the browser (design.CLIENT_EVENTS). Everything else in the event stream is written by the server as it does the thing. |
SS-121 | preset not found | Also the answer for the shipped preset, which no clinic may delete, and for another clinic's. |
SS-221 / SS-620 | manifold3d unavailable | It is a required dependency; reinstall from requirements.txt. Adapter holes and watertight repair both need it. |
SS-223 | printable-slope fix failed | The socket is returned unchanged rather than broken. Re-generate; if it persists the trimline is likely self-intersecting. |
SS-500 | unhandled server error | The type and message are included. Reproducible ones belong in a suite. |
SS-657 | the case has an order we received, and is kept | Anything past draft is a commercial and manufacturing record -- a quote, a payment, a device we made -- and it outlives the design. Cancel a draft order to delete the case. |
SS-630 | wallet below the debt floor | Redeem a charge code. Approval is blocked, design and revision are not. |
SS-631 | charge code rejected | The detail says which: bad_charge_code, charge_code_used (409), charge_code_expired (410), charge_code_wrong_currency (409), charge_secret_not_configured (503). |
SS-666 | charge code could not be issued | Usually charge_secret_not_configured: SOCKETSTUDIO_CHARGE_SECRET is unset, so any code minted would be one no clinic could validate. |
SS-670 | finalize target missing or has no file | Re-generate the socket before approving it. |
SS-680–SS-682 | insole case or design not found, or not an insole | The design belongs to another product type. |
SS-683 | insole failed the manufacturability gate | The engine's own check. A design that cannot be built must not reach a case file, let alone a print queue. |
SS-685 | pair not approved | Approve before producing. |
SS-687 | the print job could not be built | Detail carries the reason — commonly a missing print profile, or a pad promised by the parameters that could not be placed. |
Warnings, which are not errors
These accompany a successful result and are recorded on the version:
adapter_holes_skipped_install_manifold3d— expected when the optional boolean engine is missing; the adapter is attached but not drilled.printable_slope_added_max_radial_growth_<n>mm— the 50-degree fix added material. Material is only ever added, never removed.threemf_no_socket_profile_installed_bare_geometry_exported— the socket left as geometry with no print settings, because noprofiles/socket-*.3mfis installed. Not a failure, but the operator is choosing the machine, material and parameters by hand until one is.threemf_export_unavailable_stl_provided— no 3MF could be written at all; the STL is still correct.