EN ▾
mimoapi.topUncensored OpenAI-compatible API for developers
uncensoredhttps://api.mimoapi.top/v1

First request in five minutes

Connect your existing OpenAI SDK to the uncensored model in three lines. This quickstart covers authentication, basic requests, streaming, and JSON mode using the same client code you already know.

Base URL and Authentication

Start by pointing your OpenAI-compatible client to the Mimo API base URL. You will receive an API key immediately after signing up with Google or email. Pass this key in the standard Authorization header. The model identifier is uncensored, which runs an open-weight model tuned for fewer refusals on lawful adult content.

Unlike subscription services, billing is prepaid via crypto. Errors do not consume credit. You can verify connectivity by listing models or sending a simple text prompt. Keep your key secure; one key per account replaces the previous one if you generate a new one.

Standard Chat Completions Endpoint

Send a standard POST request to the chat completions endpoint. Set the model to uncensored and provide your messages in the required array format. The API returns text output based on your prompt. You can adjust parameters like temperature or top_p to control creativity.

curl https://api.mimoapi.top/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
  }'

This endpoint handles text-in, text-out interactions. It does not support embeddings, images, or fine-tuning. If you need those features, you must use a different service. The context window allows 100,000 tokens total for prompt and completion combined.

Python SDK Integration

Use the official OpenAI Python library to interact with the API. Override the base URL to point to the Mimo API endpoint. This allows you to use the same SDK methods you use for GPT-4 or other models. Set the API key and target model in your client configuration.

from openai import OpenAI

client = OpenAI(base_url="https://api.mimoapi.top/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)

This approach ensures your code remains portable. If you switch providers, you only change the base URL and key. The Python SDK handles serialization and retries automatically. You can also set parameters like seed for deterministic outputs.

Node SDK Integration

Install the OpenAI Node.js package and configure the base URL. Pass your API key in the configuration object. The client will route requests to the uncensored model endpoint. This works with both CommonJS and ES module imports.

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://api.mimoapi.top/v1", apiKey: process.env.API_KEY });

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);

Node developers can use the same asynchronous patterns they use with other OpenAI-compatible services. The SDK handles stream parsing and JSON encoding. You can set the max_tokens to control output length, defaulting to 2,048 if unspecified.

Streaming Responses (SSE)

Enable streaming by setting stream: true in your request. The API returns Server-Sent Events (SSE) containing partial tokens. This allows you to display output progressively to users. Token usage statistics appear in the final chunk of the stream.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Tell the story in second person."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Streaming reduces perceived latency for long responses. You must handle the stream events in your client code. The API does not guarantee exact token counts during streaming, but the final chunk includes accurate usage data. This is useful for billing transparency.

Rate Limits, Errors, and JSON Mode

The API enforces a limit of 300 requests per minute per key and allows 8 concurrent requests. If you exceed this, you receive a 429 error. A 401 error indicates an invalid or expired key. Prepaid credit is charged only for real token usage; errors and refusals are free.

For structured output, use JSON mode by setting response_format to json_object. This forces the model to return valid JSON. This is useful for function calling or data extraction. The context window supports up to 32,000 tokens of output per request.

Under the hood: specs

The numbers below are the real limits of this API, not marketing. Compare them with what your app needs.

ParameterDetails
ProtocolOpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key
Modeluncensored
Base URLhttps://api.mimoapi.top/v1
API keyAuthorization: Bearer YOUR_KEY
MethodsPOST /v1/chat/completions · GET /v1/models
Function callingSupported: tools + tool_choice, tool_calls in the reply (streamed too), tool results as role: tool messages
Sampling parameterstemperature, top_p, stop, seed and the two penalties are passed through
Context window100,000 tokens (prompt + completion together)
Max outputprompt + completion fit within 100,000 tokens; max_tokens optional, no separate output cap
StreamingYes — server-sent events; the last chunk carries token usage
JSON moderesponse_format: {"type": "json_object"}
Parallel requests8 requests at the same time per key
Max bodyup to 8 MB per request
Response headersX-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency
Requests per minute300/min per key
Top-upUSDT (TRC20) or USDC (Base), any whole amount from $20 to $500
Priceinput $0.15 / 1M tokens, output $0.50 / 1M tokens
Billingpay as you go from prepaid credit; nothing is charged for failed or refused requests
Bonus credit+5% from $50, +10% from $100, +15% from $200
Credit expirypaid credit never expires, no subscription
Trial credit$0.50 for 7 days, no card · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up
Key managementone key per account, regenerate any time (the old one stops working)
AccountGoogle or e-mail and password
Contentadult content allowed; sexual content involving minors is refused

HTTP errors

Every error is JSON with a type you can switch on. You are never charged for an error.

CodeTypeMeaning
400bad_requestmalformed request or too long for the context window
401missing_key · invalid_key · key_revokedcheck the Authorization header or use your current key
402no_creditout of credit; add credit and retry
403content_blockedsexual content involving minors — refused, not billed
404not_foundunknown endpoint
413request_too_largerequest body larger than 8 MB
429rate_limited · concurrencyslow down: rate or parallel limit reached
503upstream_busymodel busy — retry in a few seconds

Questions and answers

Does the API charge for errors?

No. Prepaid credit is charged only for real token usage. Errors and refusals do not consume your balance, making it cost-effective for testing.

What is the context window size?

The context window is 100,000 tokens, combining both the prompt and the completion. You can set a maximum output of 32,000 tokens per request.

How do I get JSON output?

Set the response_format parameter to json_object in your request. This ensures the model returns strictly valid JSON, suitable for programmatic parsing.

Your key is one form away

Create an account, copy the key, change the base URL. That is the whole setup.

Get API key