Skip to main content
Beta · uncalibrated
StrikeStrike

Danger zone

Preview headers for a longer window, images, and one bounding box. Off unless the request opts in.

Preview features. They stay off unless a request opts in. Image and box answers are uneven, and the longer window is slower. Do not use them for production routing.

strike-preview is an alias of strike-1. The headers change the limits. They do not load a second public model.

Headers

SwitchHeader
Longer textStrike-Danger-Zone-Long-Context: true
Images and boxStrike-Danger-Zone-Images: true

TypeSafe-Danger-Zone-Long-Context and TypeSafe-Danger-Zone-Images are accepted as the same switches. A value of true, 1, or yes turns the switch on.

Longer context

Without the header, a request is limited to 8,192 tokens, about 32,000 characters of state plus question text. With the header, that rises to 32,768 tokens and 128,000 characters.

That is the window one GPU can score. It is not 262,000 tokens. Past the long window the API returns 400 with max_tokens_exceeded. Over the default window, without the header, the code is danger_zone_required.

Images

Send each image once, under assets, and write its reference in state, instructions, or criteria. Also send Strike-Danger-Zone-Images.

JSON
{
  "model": "strike-preview",
  "state": { "photo": "6e1d0b7c-door" },
  "assets": {
    "6e1d0b7c-door": { "type": "image", "format": "jpg", "data_base64": "..." }
  },
  "questions": {
    "person": { "type": "noul", "instructions": "Is there a person in `photo`?" }
  }
}

Multipart is the same shape: a request part with the JSON, and a file part named by assets.*.part.

Limits, rejected rather than resized:

  • PNG or JPEG, still images only
  • 280 to 1024 pixels on each side
  • at most 4 images, 4 MiB each
  • every asset must be referenced

Missing the images header when the body has assets or a box question returns danger_zone_required. A bad image returns invalid_image. A file over the size cap returns 413.

Box

box returns one rectangle. There is no "not found". If the target might be absent, ask a noul in the same request and ignore the box when that probability is low.

JSON
"mug": { "type": "box", "instructions": "the coffee mug in `photo`" }
JSON
{
  "type": "box",
  "box": { "top": 0.25, "bottom": 0.82, "left": 0.44, "right": 0.84 },
  "confidence": 0.92
}

Edges are fractions of width and height from the top-left. left is less than right, and top is less than bottom.

The preview splits the current crop into a 4 by 4 grid, picks a tile, and repeats that three times. confidence is the product of those three picks. It will miss small targets. Crop first if the thing you want is only a few dozen pixels wide.

You can try a sample in the playground. Turn on Danger zone, then pick Box and attach a PNG or JPEG.

Python SDK

Python
from strike import Box, Client, Image

client = Client()
result = client.system_one(
    model="strike-preview",
    state={"door": Image("door.jpg")},
    questions={
        "person": {"type": "noul", "instructions": "Is there a person in `door`?"},
        "where": Box("the person in `door`"),
    },
)

Image(...) turns the images header on and uploads a multipart body. long_context=True sends the long-context header.

Danger zone: Strike docs