cicora.ai / docs
API

System One API

TypeSafe native format for text, JSON, images and typed answers.

Last updated on

System One uses TypeSafe's native JSON format with the same decision models and API key. The selected model's catalog price applies.

Text and JSON

Use decision.json from the Decisions API example with this request path:

Terminal
curl --fail-with-body --silent --show-error https://api.cicora.ai/v1/systemone \
  -H "Authorization: Bearer $CICORA_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @decision.json

POST /api/v1/systemone is an alias for the same operation. Do not duplicate /v1 when configuring a base URL.

Differences from Decisions API

  • Question instructions may be omitted or null.
  • Choice returns choice, confidence and probabilities.
  • Score returns score, confidence, probabilities and legend.
  • Noul returns noul, a number from 0 to 1.
  • Box returns box with normalized top, bottom, left, right edges from 0 to 1, and confidence.

Choice accepts at most 255 options and Score at most 10 levels; individual models can impose lower limits. Check supported question types and context in the catalog.

Images and Box

Only models with verified image and Box support on System One accept this input. Add typesafe-danger-zone-images: true. Supply PNG/JPEG via assets; data_base64 contains raw Base64 without a data: prefix. Multipart uploads are not supported.

The body below illustrates the structure. Replace BASE64_IMAGE_BYTES with actual encoded image bytes.

Image request body
{
  "model": "typesafe/jev-1.14",
  "state": "Product photo: product",
  "assets": {
    "product": {"type": "image", "format": "png", "data_base64": "BASE64_IMAGE_BYTES"}
  },
  "questions": {
    "product_region": {"type": "box", "instructions": "The product in the product photo."}
  }
}

Box edges are measured from the top-left corner. A box alone does not prove the target exists; add a Noul presence question when your task requires that check.

Long context

If supported by the model, explicitly enable long context with typesafe-danger-zone-long-context: true. Opt-in headers must have the exact value true; omit a header when its mode is not needed. These flags do not bypass model context or request body limits.

See Decisions API for costs, usage accounting and retry behavior. To try the model without code, select it from the chat model picker in the cabinet.

Troubleshooting

On this page