Source: https://ailoot.ai/models/en/typesafe-jev-1-13/
Canonical: https://ailoot.ai/models/en/typesafe-jev-1-13/
Language: en

# TypeSafe: Jev 1.13

[Markdown](https://ailoot.ai/models/en/typesafe-jev-1-13/index.md) · [JSON](https://ailoot.ai/models/en/typesafe-jev-1-13/facts.json)

## [TypeSafe: Jev 1.13](https://ailoot.ai/models/en/typesafe-jev-1-13/)

Jev 1.13 is TypeSafe’s text-only System One decision model. It returns typed Choices, fractional rubric Scores and yes/no probabilities directly, with distributions and model-specific confidence statistics, for classification, routing and focused judgments.

- [**Ailoot Ultra · System One** `POST /v1/systemone` `typesafe/jev-1.13`](https://ailoot.ai/models/en/typesafe-jev-1-13/#method-0)
- [**Ailoot Ultra · System One** `POST /v1/systemone` `~typesafe/jev-latest`](https://ailoot.ai/models/en/typesafe-jev-1-13/#method-1)

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

Jev 1.13 is TypeSafe’s versioned System One model for structured decisions. Its producer identifier is jev-1.13.0. It evaluates text or textual JSON state against typed questions and returns values and probability distributions directly, without composing a written answer. The edition suits classification, routing, condition checks and rubric judgments whose possible outcomes are known before the request.

#### State and focused question preparation

Supply a string, a JSON object or an array of text values as the state. Use named fields when the evidence contains related records, a conversation and a policy. Retain the parts each question needs and refer to a specific field or item when that identifies the evidence clearly. Jev 1.13 is text only; images, audio, video and binaries need preparation into text or structured textual fields outside this model.

Each question has a type, instructions and any criteria its type requires. Instructions and criterion descriptions can use text or JSON structure. The producer returns answers under the question identifiers, but those identifiers are not part of inference. Write the complete question rather than relying on an identifier such as urgent to imply the intended criterion. A useful support state can contain the message and impact details while separate questions define its category and severity.

#### Choice: a supplied category and its distribution

Choice selects the highest-probability option from the unordered set defined by the caller. Its criteria map contains the option keys and descriptions, with null allowed when an option needs no extra explanation. The documented limit is 255 options per Choice. Add an other or no-match option when a taxonomy does not cover all possible evidence, and explain boundaries that a short category name does not settle.

The answer contains the selected option, a probability for every option and confidence. Keep the distribution when two candidates are close instead of treating the selected label as certainty. The selected category can identify a proposed route; the surrounding application decides whether and how to perform that route.

#### Score: an expected level, not an exact measurement

Score uses an ordered array of described levels, with at least two recommended and up to ten supported. Indices start at 0. The numerical result is the probability-weighted average of the level indices, so it may fall between levels. The answer’s legend relates the indices to their descriptions, and the level probabilities show how the judgment is distributed.

For severity, describe the difference between cosmetic impact, a usable workaround and a blocked task. A fractional score can help prioritize or aggregate judgments, while selecting the most probable category is a different operation. TypeSafe’s edition-specific guide warns that Score is weak for reconstructing an exact physical or numerical quantity by interpolating between levels. Keep precise arithmetic and measurements outside the model.

#### Noul and confidence have distinct meanings

Noul returns the probability, from 0 to 1, that a defined condition is true. Optional true and false criteria clarify the boundary. It has no separate confidence field. A probability near 0.5 indicates uncertainty about yes versus no, not a middle value on a graded scale.

Choice and Score confidence are derived from their own distributions. For Choice with at least two options (n \> 1) and selected probability p\_max, the documented formula is (p\_max − 1/n) / (1 − 1/n): it compares the top outcome with an even split. Score confidence also accounts for the probability-weighted distance from the most likely level, normalized against the spread of a uniform distribution and floored at 0. Thus adjacent ambiguous levels and opposite-end ambiguity have different meanings. Keep the full distribution when the task needs more detail than a single statistic.

#### Independent judgments over shared evidence

Questions in one request see the same state and are evaluated independently. A result from one question is not hidden context for another. Split a broad judgment into focused concerns, then interpret or combine the returned values according to the task. An issue can have a category, an impact rating and a relevance check without turning those independent criteria into one vague priority label.

If a later question needs evidence fetched or options chosen from an earlier result, make that dependency explicit in a later request. For candidate extraction, first obtain the available values from the source, then use a bounded Choice to select among them. Jev 1.13 is not trained for free-form text generation and should not be described as producing an arbitrary new string or a narrative explanation.

#### Edition-specific context and language limits

The maker lists a 64k-token budget for the state plus all questions combined, and a 32k-token budget for the state plus the longest single question. Both constraints matter. A state that fits the total budget can still leave too little room for an individual question’s instructions and options. Remove unrelated material while keeping the evidence that determines the answer.

English is the edition’s primary training language and the producer reports its best accuracy there. Other languages, including CJK scripts, are accepted but do not have equal accuracy. Use representative source material from the intended language when assessing how probabilities or category boundaries should be interpreted. A text-only input contract does not establish universal multilingual performance.

#### Published substantive limitations

TypeSafe documents literal reading of scoping words and negations, unreliable counting and arithmetic, difficulty comparing dates as ordered quantities, and reduced reliability with multiple layers of indirection. It recommends doing exact computation in code and giving the model the semantic judgment. Numerical encodings can be less effective than meaningful names, and a large state filled with unrelated detail can distract from the relevant evidence.

The same guide says adversarial content in state can steer the answer; contradictory instructions and criteria can confuse it; and Choice option order can sometimes bias a result toward an early option. Define the actual condition, align instructions with criteria, reduce unnecessary hops, and compare borderline judgments against the source. Keep the Jev 1.13 limits in mind when interpreting its judgments.

A useful Jev 1.13 artifact preserves the state identifier, complete question, options or levels, typed result, probabilities and relevant confidence statistic. Keep the version explicit when results or thresholds depend on this edition. Review uncertain cases against the evidence and let the application perform exact calculations and workflow actions; the model supplies a focused judgment with numerical uncertainty.

**Ailoot Ultra · System One** `POST /v1/systemone` `typesafe/jev-1.13`

[`typesafe/jev-1.13`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=typesafe%2Fjev-1.13&fmt=systemone)

TypeSafe /`typesafe/jev-1.13`

Model ID

- `typesafe/jev-1.13`
- `~typesafe/jev-latest`

### Overview

Jev 1.13 is TypeSafe’s text-only System One decision model. It returns typed Choices, fractional rubric Scores and yes/no probabilities directly, with distributions and model-specific confidence statistics, for classification, routing and focused judgments.

Accepted inputs

Text

Results

decisions

### Available in Ailoot · inputs & methods

**Ailoot Ultra · System One** `POST /v1/systemone`

Input types

`text`

Output types

`decisions`

Output format

json

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits typesafe/jev-1.13 | Default— |
| Field`provider` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`questions` | Type`object` | RequirementRequired | Values & limits | Default— |
| Field`session_id` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`state` | Type`schema` | RequirementRequired | Values & limits | Default— |
| Field`trace` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`user` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`questions.<id>.type` | Type`string` | RequirementRequired | Values & limits noul, choice, score | Default— |
| Field`questions.<id>.instructions` | Type`string\|object\|array` | RequirementRequired | Values & limits | Default— |
| Field`questions.<id>.criteria` | Type`object\|array` | RequirementOptional | Values & limits Conditions: choice/score: required; noul: optional. choice criteria is object; score is array with minItems1. | Default— |
| Field`questions.<id>.criteria.true` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |
| Field`questions.<id>.criteria.false` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |

Input material combinations

**noul** · Required: state, questions.\<id\>.type=noul, questions.\<id\>.instructions

**choice** · Required: state, questions.\<id\>.type=choice, questions.\<id\>.instructions, criteria object

**score** · Required: state, questions.\<id\>.type=score, questions.\<id\>.instructions, criteria array with minItems1

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, state, questions |
| Parameter`material_types` | Contracttext |
| Parameter`optional_controls` | Contractprovider, session\_id, trace, user |
| Parameter`multimodal_input_binding` | Contractnull |

Lifecycle: `synchronous`

Send the exact model ID and retain the complete native response.

### Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode

Not specified When fast mode is selected

Flex mode

Not specified When flex mode is selected

Maximum reasoning effort

Not specified When maximum reasoning effort uses the default adjustment

#### Ailoot rates

#### Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

| Configuration | Rate schedule | Context tokens, more than | Context tokens, up to and including | Charge |
| --- | --- | --- | --- | --- |
| ConfigurationBase token rates | Rate scheduleBase rate | Context tokens, more than— | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |
| ConfigurationRequest-length tier 1 | Rate schedule— | Context tokens, more than0 | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot Ultra · System One

Retained official request structure; documentary exampleUse your actual request material and retain the complete result

```json
{
  "model": "typesafe/jev-1.13",
  "questions": {
    "is_bug": {
      "criteria": {
        "false": "The customer is asking a question or requesting a feature.",
        "true": "The customer describes broken or unexpected product behavior."
      },
      "instructions": "Is the customer reporting a software defect?",
      "type": "noul"
    },
    "team": {
      "criteria": {
        "account": "Login, permissions, or profile issues.",
        "frontend": "Rendering, layout, or browser compatibility issues.",
        "payments": "Checkout, billing, or payment processing issues."
      },
      "instructions": "Which team should own this ticket?",
      "type": "choice"
    },
    "urgency": {
      "criteria": [
        "Can wait for the next release",
        "Should be fixed this week",
        "Blocking revenue right now"
      ],
      "instructions": "How urgent is this ticket?",
      "type": "score"
    }
  },
  "state": {
    "customer_tier": "enterprise",
    "ticket": "My checkout page shows a blank screen after I click Pay. I have tried two browsers."
  }
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_REQUEST_FILE:?Set your actual JSON request file}"
export AILOOT_REQUEST_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads(Path(os.environ['AILOOT_REQUEST_FILE']).read_text(encoding='utf-8'))
if not isinstance(p,dict): raise SystemExit('Request must be a JSON object')
p['model']='typesafe/jev-1.13'
Path('request.json').write_text(json.dumps(p,ensure_ascii=False),encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path('result.json').read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Receive and save results

#### Ailoot Ultra · System One

json

##### Keep all completed results

Keep every complete returned response, file and content part.

Every supplied question-ID answer with its exact type, noul/choice/score value, confidence, probabilities and legend is retained. Entire original JSON is stored and returned only after settlement.

##### If the original response needs checking

Preserve original operation and full/partial reply; do not replay POST.

Response fields

| Field | Type |
| --- | --- |
| Field`model` | Typestring |
| Field`id` | Typestring |
| Field`provider` | Typestring |
| Field`answers.<id>.type` | Typestring |
| Field`answers.<id>.noul` | Typenumber |
| Field`answers.<id>.choice` | Typestring |
| Field`answers.<id>.score` | Typenumber |
| Field`answers.<id>.confidence` | Typenumber |
| Field`answers.<id>.probabilities` | Typeobject |
| Field`answers.<id>.legend` | Typeobject |
| Field`usage.input_tokens` | Typeinteger |
| Field`usage.output_tokens` | Typeinteger |
| Field`usage.cost` | Typenumber |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required field, representation or value | Next stepCorrect the indicated request field. |

### Aliases

#### Model aliases

**Ailoot Ultra** [`typesafe/jev-1.13`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=typesafe%2Fjev-1.13&fmt=systemone), [`~typesafe/jev-latest`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=~typesafe%2Fjev-latest&fmt=systemone)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`typesafe/jev-1.13`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=typesafe%2Fjev-1.13&fmt=systemone), [`~typesafe/jev-latest`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=~typesafe%2Fjev-latest&fmt=systemone)

**Ailoot Ultra · System One** `POST /v1/systemone` `~typesafe/jev-latest`

[`~typesafe/jev-latest`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=~typesafe%2Fjev-latest&fmt=systemone)

TypeSafe /`~typesafe/jev-latest`

Model ID

- `typesafe/jev-1.13`
- `~typesafe/jev-latest`

### Overview

Jev 1.13 is TypeSafe’s text-only System One decision model. It returns typed Choices, fractional rubric Scores and yes/no probabilities directly, with distributions and model-specific confidence statistics, for classification, routing and focused judgments.

Accepted inputs

Text

Results

decisions

### Available in Ailoot · inputs & methods

**Ailoot Ultra · System One** `POST /v1/systemone`

Input types

`text`

Output types

`decisions`

Output format

json

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits ~typesafe/jev-latest | Default— |
| Field`provider` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`questions` | Type`object` | RequirementRequired | Values & limits | Default— |
| Field`session_id` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`state` | Type`schema` | RequirementRequired | Values & limits | Default— |
| Field`trace` | Type`schema` | RequirementOptional | Values & limits | Default— |
| Field`user` | Type`string` | RequirementOptional | Values & limits | Default— |
| Field`questions.<id>.type` | Type`string` | RequirementRequired | Values & limits noul, choice, score | Default— |
| Field`questions.<id>.instructions` | Type`string\|object\|array` | RequirementRequired | Values & limits | Default— |
| Field`questions.<id>.criteria` | Type`object\|array` | RequirementOptional | Values & limits Conditions: choice/score: required; noul: optional. choice criteria is object; score is array with minItems1. | Default— |
| Field`questions.<id>.criteria.true` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |
| Field`questions.<id>.criteria.false` | Type`string\|object\|array` | RequirementRequired | Values & limits Applies when: noul criteria object supplied | Default— |

Input material combinations

**noul** · Required: state, questions.\<id\>.type=noul, questions.\<id\>.instructions

**choice** · Required: state, questions.\<id\>.type=choice, questions.\<id\>.instructions, criteria object

**score** · Required: state, questions.\<id\>.type=score, questions.\<id\>.instructions, criteria array with minItems1

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, state, questions |
| Parameter`material_types` | Contracttext |
| Parameter`optional_controls` | Contractprovider, session\_id, trace, user |
| Parameter`multimodal_input_binding` | Contractnull |

Lifecycle: `synchronous`

Send the exact model ID and retain the complete native response.

### Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode

Not specified When fast mode is selected

Flex mode

Not specified When flex mode is selected

Maximum reasoning effort

Not specified When maximum reasoning effort uses the default adjustment

#### Ailoot rates

#### Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

| Configuration | Rate schedule | Context tokens, more than | Context tokens, up to and including | Charge |
| --- | --- | --- | --- | --- |
| ConfigurationBase token rates | Rate scheduleBase rate | Context tokens, more than— | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |
| ConfigurationRequest-length tier 1 | Rate schedule— | Context tokens, more than0 | Context tokens, up to and includingNo upper bound | Charge Input · Input tokens **$0.000084** / 1K tokens Output · Output tokens **$0** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

### Example requests

#### Ailoot Ultra · System One

Retained official request structure; documentary exampleUse your actual request material and retain the complete result

```json
{
  "model": "~typesafe/jev-latest",
  "questions": {
    "is_bug": {
      "criteria": {
        "false": "The customer is asking a question or requesting a feature.",
        "true": "The customer describes broken or unexpected product behavior."
      },
      "instructions": "Is the customer reporting a software defect?",
      "type": "noul"
    },
    "team": {
      "criteria": {
        "account": "Login, permissions, or profile issues.",
        "frontend": "Rendering, layout, or browser compatibility issues.",
        "payments": "Checkout, billing, or payment processing issues."
      },
      "instructions": "Which team should own this ticket?",
      "type": "choice"
    },
    "urgency": {
      "criteria": [
        "Can wait for the next release",
        "Should be fixed this week",
        "Blocking revenue right now"
      ],
      "instructions": "How urgent is this ticket?",
      "type": "score"
    }
  },
  "state": {
    "customer_tier": "enterprise",
    "ticket": "My checkout page shows a blank screen after I click Pay. I have tried two browsers."
  }
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_REQUEST_FILE:?Set your actual JSON request file}"
export AILOOT_REQUEST_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads(Path(os.environ['AILOOT_REQUEST_FILE']).read_text(encoding='utf-8'))
if not isinstance(p,dict): raise SystemExit('Request must be a JSON object')
p['model']='~typesafe/jev-latest'
Path('request.json').write_text(json.dumps(p,ensure_ascii=False),encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/systemone \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path('result.json').read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

### Receive and save results

#### Ailoot Ultra · System One

json

##### Keep all completed results

Keep every complete returned response, file and content part.

Every supplied question-ID answer with its exact type, noul/choice/score value, confidence, probabilities and legend is retained. Entire original JSON is stored and returned only after settlement.

##### If the original response needs checking

Preserve original operation and full/partial reply; do not replay POST.

Response fields

| Field | Type |
| --- | --- |
| Field`model` | Typestring |
| Field`id` | Typestring |
| Field`provider` | Typestring |
| Field`answers.<id>.type` | Typestring |
| Field`answers.<id>.noul` | Typenumber |
| Field`answers.<id>.choice` | Typestring |
| Field`answers.<id>.score` | Typenumber |
| Field`answers.<id>.confidence` | Typenumber |
| Field`answers.<id>.probabilities` | Typeobject |
| Field`answers.<id>.legend` | Typeobject |
| Field`usage.input_tokens` | Typeinteger |
| Field`usage.output_tokens` | Typeinteger |
| Field`usage.cost` | Typenumber |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required field, representation or value | Next stepCorrect the indicated request field. |

### Aliases

#### Model aliases

**Ailoot Ultra** [`typesafe/jev-1.13`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=typesafe%2Fjev-1.13&fmt=systemone), [`~typesafe/jev-latest`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=~typesafe%2Fjev-latest&fmt=systemone)

#### Method path aliases

Use the method paths shown above.

#### Related caller IDs

[`typesafe/jev-1.13`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=typesafe%2Fjev-1.13&fmt=systemone), [`~typesafe/jev-latest`](https://ailoot.ai/models/en/#m=typesafe%2Fjev-1.13&route=Ultra&caller=~typesafe%2Fjev-latest&fmt=systemone)

FAQ · TypeSafe: Jev 1.13

What inputs and results are available?

`POST /v1/systemone` · `typesafe/jev-1.13`: `text` → `decisions` `POST /v1/systemone` · `~typesafe/jev-latest`: `text` → `decisions`

Which fields does the request use?

`POST /v1/systemone` · `typesafe/jev-1.13`: `model`, `provider`, `questions`, `session_id`, `state`, `trace`, `user` `POST /v1/systemone` · `~typesafe/jev-latest`: `model`, `provider`, `questions`, `session_id`, `state`, `trace`, `user`

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

## The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

## Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription

Choose a discounted plan for your regular requests.

Promo code: up to 50% off

Enter your code at checkout. The price updates to reflect the current promotion.

Spending in your history

The model, tokens and amount are recorded for each request.

[Choose a subscription](https://ailoot.ai/docs/en/billing/subscriptions/) · [View model prices](https://ailoot.ai/models/en/)

## Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application

Add text, image, video and audio generation to paid features in your service.

Reseller licence

Send a description of your project and how you provide access. Request written terms for use and resale.

Documents on the website

The service offer, licence agreement and data processing policy are available before you connect.

[Request a reseller licence](mailto:support@ailoot.ai) · [Service offer and licence agreement](https://ailoot.ai/legal/offer?lang=en)

## Ailoot · The company and its project portfolio





Ailoot combines established operating experience, a large client base, stable service and ongoing KPI control.





The company and its project portfolio: millions of customers; monthly sales in the billions.





Ailoot brings that operating experience to API access for AI features in customer products, agents, applications and automations.
