Ask a question to SpaceXAI Grok models with vision capabilities.
You can specify arbitrary text prompts or predefined ones, the block supports the following types of prompt:
Open Prompt (
unconstrained) - Use any prompt to generate a raw responseText Recognition (OCR) (
ocr) - Model recognizes text in the imageVisual Question Answering (
visual-question-answering) - Model answers the question you submit in the promptCaptioning (short) (
caption) - Model provides a short description of the imageCaptioning (
detailed-caption) - Model provides a long description of the imageSingle-Label Classification (
classification) - Model classifies the image content as one of the provided classesMulti-Label Classification (
multi-label-classification) - Model classifies the image content as one or more of the provided classesUnprompted Object Detection (
object-detection) - Model detects and returns the bounding boxes for prominent objects in the imageStructured Output Generation (
structured-answering) - Model returns a JSON response with the specified fields
For object-detection, the model returns a JSON list of {"label": ..., "box_2d": [x_min, y_min, x_max, y_max]} entries, where coordinates are percentages of image width and height. Use VLM As Detector with model_type set to spacexai to turn the output into standard detection predictions.
You need to provide your own xAI API key (created at console.x.ai) to use this block. Requests go directly to xAI and are billed to your xAI account.
Type identifier
Use the following identifier in step "type" field: roboflow_core/spacexai@v1 to add the block as a step in your workflow.
Properties
| Name | Type | Description | Refs |
|---|---|---|---|
name | str | Enter a unique identifier for this step.. | ❌ |
task_type | str | Task type to be performed by model. Value determines required parameters and output response.. | ❌ |
prompt | str | Text prompt to the Grok model. | ✅ |
output_structure | Dict[str, str] | Dictionary with structure of expected JSON response. | ❌ |
classes | List[str] | List of classes to be used. | ✅ |
api_key | str | Your xAI API key. | ✅ |
model_version | str | Model to be used. | ✅ |
reasoning_effort | str | Optional reasoning effort passed to xAI. | ✅ |
max_tokens | int | Maximum number of tokens the model can generate in its response. If not specified, the model will use its default limit. Minimum value is 16.. | ❌ |
temperature | float | Temperature to sample from the model - value in range 0.0-2.0, the higher - the more random / "creative" the generations are.. | ✅ |
max_concurrent_requests | int | Number of concurrent requests that can be executed by block when batch of input images provided. If not given - block defaults to value configured globally in Workflows Execution Engine. Please restrict if you hit xAI limits.. | ❌ |
The Refs column marks possibility to parametrise the property with dynamic values available in workflow runtime. See Bindings for more info.
Runtime compatibility
requires_internet - air-gapped / offline deployments : This block depends on a service that is not reachable from fully offline / air-gapped deployments.
Input and Output Bindings
The available connections depend on its binding kinds. Check what binding kinds SpaceXAI in version v1 has.
Input and output bindings
input
images(image): The image to infer on..prompt(string): Text prompt to the Grok model.classes(list_of_values): List of classes to be used.api_key(Union[secret,string]): Your xAI API key.model_version(string): Model to be used.reasoning_effort(string): Optional reasoning effort passed to xAI.temperature(float): Temperature to sample from the model - value in range 0.0-2.0, the higher - the more random / "creative" the generations are..
output
output(Union[string,language_model_output]): String value ifstringor LLM / VLM output iflanguage_model_output.classes(list_of_values): List of values of any type.
Example JSON definition
{
"name": "<your_step_name_here>",
"type": "roboflow_core/spacexai@v1",
"images": "$inputs.image",
"task_type": "<block_does_not_provide_example>",
"prompt": "my prompt",
"output_structure": {
"my_key": "description"
},
"classes": [
"class-a",
"class-b"
],
"api_key": "xxx-xxx",
"model_version": "grok-4.6",
"reasoning_effort": "<block_does_not_provide_example>",
"max_tokens": "<block_does_not_provide_example>",
"temperature": "<block_does_not_provide_example>",
"max_concurrent_requests": "<block_does_not_provide_example>"
}