Skip to main content
POST
/
studio
/
v1
/
maestro
/
runs
from ai21 import AI21Client

client = AI21Client()

run_result = client.beta.maestro.runs.create_and_poll(
    input="Extract vendor name, invoice number, total amount, and due date from the document",
    requirements=[
        {
            "name": "field presence validation",
            "description": "Ensure all required fields are extracted and not left empty"
        },
        {
            "name": "format consistency",
            "description": "Dates must follow YYYY-MM-DD and amounts should be in USD format."
        },
    ],
    include=["requirements_result"]
)

print(run_result.result)

Request body

input
string | object[]
required
A list of conversational turns, alternating between the user and the assistant, or a single instruction string.Please note that there are two different options for the input.
Text input string
A plain instruction string for AI21 Maestro. Equivalent to a single message with the user role.

Input messages object []
A list of message objects representing a multi-turn conversation alternating between the user and the assistant.
role
string
required
The role of the entity that is creating the message. Allowed values include:user : A message is sent by an actual user. It represents the user’s intent.assistant : A message is generated by the assistant.
content
string
required
The textual content of the message.
requirements
object[]
Explicit requirements for the output. The requirements can be in terms of content, style, format, genre, point of view, and various guardrails AI21 Maestro will allocate resources to maintain all requirements throughout the run. At the end of the run, the score for each requirement and the overall score will be returned. Users can specify up to 10 requirements.
name
string
required
The requirement’s name, which allows users to reference it in their applications later.
description
string
required
The requirement’s description in natural language. This will influence our result scoring and budget allocation. The maximum length for each description is 128 words.
is_mandatory
boolean
Default: false.
If set to true, and the associated requirement is not fully satisfied, the overall requirements_result score will be 0.
Examples of requirements:
  • “Write up to 3 paragraphs”
  • “Output only the answer”
  • “Don’t mention a word about the company’s CEO”
  • “Use a friendly tone”
Note:Requirements only work if no tools are selected.
Avoid conflicting requirementsConflicts may reduce run quality or prevent fulfillment.
tools
object[]
An array of objects.
type
string
required
Supported values are file_search and web_search.
tool_resources
object
A set of resources used by AI21 Maestro’s tools.
When provided, this object defines filters that AI21 Maestro will apply whenever it performs a file search.
labels
string[]
Restrict file search to files with these labels. If not provided, search is not restricted by label.
file_ids
string[]
Restrict file search to these file IDs. If not provided, search is not restricted by file ID.
When provided, this object defines filters that AI21 Maestro will apply whenever it performs a web search.
urls
string[]
Restrict web search to the specified URL prefixes. The following formats are valid:
  1. https://example.com – limits to URLs that start with www.example.com
  2. example.com – limits to URLs that start with www.example.com
  3. example.com/page – limits to URLs that start with www.example.com/page
  4. sub.example.com – limits to URLs that start with the specified subdomain (e.g., docs.example.com, blog.example.com)
If not provided, search is not restricted to specific domains.
models
string[]
defaults to null.Specify a single model to be used for the run. Choose from the following:First-Party Models Models hosted and managed by AI21:
  • jamba-large
  • jamba-mini
Third‑Party Models (Managed by AI21) Models hosted by third-party providers but accessed through AI21’s API (no user API key required):
  • gpt-4o – The latest GPT‑4o model, accessed using AI21’s own API key
  • mistral-8x7b
  • mistral-7b
  • mistral-small
Third-Party Models (BYOK)
Bring‑Your‑Own‑Key (BYOK) third‑party models:
Specify the ID of a third-party model configured on the 3rd-Party Models page.
These models require your own API key. AI21 uses your key to authenticate and access the model on your behalf. Supported providers include OpenAI, Anthropic, and Google.
budget
string
Controls how many resources AI21 Maestro allocates to fulfill the requirements. Accepted values:
  • high
  • medium
  • low
Defaults to low if not provided.
include
string[]
Specify which extra fields should be included in the output. If not provided, none of these fields will be included. Supported values:
  • data_sources — Includes the data_sources field in the output.
  • requirements_result — Includes detailed results for each requirement in the requirements_result field.
response_language
string | null
Controls the output language of AI21 Maestro responses.
Response language can be only one of the following: “arabic”, “dutch”, “english”, “french”, “german”, “hebrew”, “italian”, “portuguese”, “spanish”.
If not provided, defaults to English.

Returns

Run object
from ai21 import AI21Client

client = AI21Client()

run_result = client.beta.maestro.runs.create_and_poll(
    input="Extract vendor name, invoice number, total amount, and due date from the document",
    requirements=[
        {
            "name": "field presence validation",
            "description": "Ensure all required fields are extracted and not left empty"
        },
        {
            "name": "format consistency",
            "description": "Dates must follow YYYY-MM-DD and amounts should be in USD format."
        },
    ],
    include=["requirements_result"]
)

print(run_result.result)