Skip to content
Hoody.com

Hoody AI reaches 300+ AI models. Your server connects to 15+ inference providers through the Hoody AI gateway and its model routing upstream.


Providers your server reaches through Hoody AI include:

  • MiniMax - MiniMax M-series models
  • Qwen (Alibaba) - Qwen 3 Max and the Qwen family
  • DeepSeek - DeepSeek V-series, DeepSeek Coder
  • Meta (via providers) - Llama 4, Llama 3.3, Llama 3.1
  • Mistral AI - Mistral Large, Medium, Mixtral
  • xAI - Grok 4, Grok Vision
  • Microsoft - Phi models
  • Amazon - Nova models
  • NVIDIA - Nemotron models
  • Cohere - Command R+, Embed models
  • Perplexity AI - Sonar Pro, Sonar models
  • Together AI - Open model hosting platform
  • Fireworks AI - Optimized open model inference

OpenAI, Anthropic, and Google models are excluded from the Hoody AI catalog. /api/v1/ai/models never returns them, so treat that endpoint as the authoritative list. To use those vendors, set their own API key inside your container and call them directly.

The model catalog returns the upstream provider pricing values unchanged; HOODY_AI_MODELS_MARKUP_BPS is not applied to the catalog or to gateway usage. Your prompts and responses flow through the Hoody AI gateway running on your own host, then out through the model routing upstream to the provider. No Hoody-operated platform server terminates them.

The Authorization: Bearer container-<name|N> shown in the HTTP examples below is a container identity/tracking token automatically minted for each container, not a Hoody API token you copy from a dashboard.


Chat and completion models handle conversations, code generation, analysis, and general-purpose tasks.

Text models in the catalog come from these providers:

  • MiniMax - MiniMax M3
  • Qwen - Qwen 3 Max
  • DeepSeek - DeepSeek V-series, DeepSeek Coder
  • Meta - Llama 4, Llama 3.3 70B, Llama 3.1 405B
  • Mistral - Mistral Large, Mistral Medium, Mixtral
  • xAI - Grok 4
  • Microsoft - Phi 4

Request a chat completion from inside a container:

Terminal window
# Chat completion from your container
curl -X POST "https://ai.hoody.com/api/v1/chat/completions" \
-H "Authorization: Bearer container-1" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax/minimax-m3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
POST Text generation request
https://ai.hoody.com/api/v1/chat/completions

Hoody AI’s catalog is served from the gateway’s upstream model list, and image generation happens through the standard OpenAI-compatible /api/v1/chat/completions route, not a separate images endpoint. Models that can return images advertise "image" in their output_modalities in the /models catalog. Request one of those models and the response message includes the generated image.

Ask an image-capable model to return an image:

Terminal window
# Ask an image-capable model to generate an image (output via chat/completions)
curl -X POST "https://ai.hoody.com/api/v1/chat/completions" \
-H "Authorization: Bearer container-1" \
-H "Content-Type: application/json" \
-d '{
"model": "<image-capable-model-id>",
"messages": [{"role": "user", "content": "A serene mountain landscape at sunset"}]
}'

Embedding models convert text into vectors for semantic search, similarity matching, and RAG applications. They come from the same catalog: Cohere, Voyage AI, and the other vendors Hoody AI serves. Pull the live list and pick an id from it rather than hard-coding one from this page:

Terminal window
curl -s https://api.hoody.com/api/v1/ai/models -H "Authorization: Bearer $HOODY_TOKEN" \
| jq -r '.data.models[].id' | grep -i embed

Generate an embedding:

Terminal window
# Generate text embeddings
curl -X POST "https://ai.hoody.com/api/v1/embeddings" \
-H "Authorization: Bearer container-1" \
-H "Content-Type: application/json" \
-d '{"model": "<embedding-model-id>", "input": "Search for similar documents"}'

The catalog changes as the upstream adds and retires models, so select from the live list instead of a table that rots. Every entry has pricing; context_length may be absent or null, and the input_modalities / output_modalities fields are optional.

For code generation, analysis, and long documents, sort by context window and take the largest that fits your budget:

Terminal window
curl -s https://api.hoody.com/api/v1/ai/models -H "Authorization: Bearer $HOODY_TOKEN" \
| jq -r '.data.models | sort_by(-(.context_length // 0))[] | "\(.context_length)\t\(.id)"' | head

For image understanding, filter on models that accept image input:

Terminal window
curl -s https://api.hoody.com/api/v1/ai/models -H "Authorization: Bearer $HOODY_TOKEN" \
| jq -r '.data.models[] | select(.input_modalities | index("image")) | .id'

pricing.prompt is the per-input-token provider base price supplied by the upstream catalog, and Hoody returns it unchanged. Cheapest first:

Terminal window
curl -s https://api.hoody.com/api/v1/ai/models -H "Authorization: Bearer $HOODY_TOKEN" \
| jq -r '.data.models | map(select((.pricing.prompt? | tonumber?) >= 0)) | sort_by(.pricing.prompt | tonumber)[] | "\(.pricing.prompt)\t\(.id)"' | head

Prototype on something at the cheap end and promote to a premium model only where the cheap one visibly fails.


For catalog-listed models, treat identifiers as opaque: copy the id exactly as returned by /api/v1/ai/models; do not abbreviate or alter it. The free-tier routing alias is an exception: when Hoody Free is enabled with a valid provider bundle, container-authenticated chat requests may use hoody-free, hoody/hoody-free, or hoody-ai/hoody-free even though those aliases are not catalog entries.


The SDK equivalent is client.api.ai.listModels(), which returns the same data from any supported language.


All text models support streaming responses:

POST Streaming chat completion
https://ai.hoody.com/api/v1/chat/completions

The endpoint returns Server-Sent Events (SSE) for real-time token streaming.

The gateway forwards tools unchanged, so function calling works with any catalog model whose provider supports it. Check the model’s own capabilities before relying on it.

POST Function calling request
https://ai.hoody.com/api/v1/chat/completions

Models with image understanding advertise "image" in input_modalities. Filter the live catalog on that field (see By use case above).

The following body is a template. Replace <vision-capable-model-id> with a current catalog id whose input_modalities contains "image", and replace <image-url> with a reachable image URL before sending it.

{
"model": "<vision-capable-model-id>",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image_url", "image_url": { "url": "<image-url>" } }
]
}
]
}

Start cheap and scale up:

  1. Prototype on a model from the cheap end of the pricing.prompt sort
  2. Test on a mid-tier model once the prompt shape is settled
  3. Promote to a premium model only for the calls that visibly need it

Match the model to task complexity:

  • Simple tasks → fast, cheap models
  • Complex reasoning → premium models
  • Bulk operations → batched requests with economical models

Example:

// Replace these placeholders with three ids selected from the live catalog after sorting on pricing.prompt
const CHEAP = '<cheap-chat-model-id>';
const MID = '<mid-tier-chat-model-id>';
const PREMIUM = '<premium-chat-model-id>';
// Classification: Use cheap model
const category = await classifyWithModel(CHEAP, text);
// Based on category, use appropriate model
const modelMap = {
'simple': CHEAP,
'moderate': MID,
'complex': PREMIUM
};
const response = await processWithModel(modelMap[category], text);

Monitor AI usage per container:

Terminal window
# Check which containers have AI enabled
curl "https://api.hoody.com/api/v1/containers/" \
-H "Authorization: Bearer $HOODY_TOKEN" \
| jq '.data.containers[] | select(.ai == true) | {id, name, ai}'
# Enable/disable AI per container to control access
curl -X PATCH "https://api.hoody.com/api/v1/containers/{id}" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ai": false}' # Disable AI to prevent usage

Container-level quotas and rate limiting are not currently available. You control cost by enabling or disabling AI access per container.


Problem: Invalid model identifier

Solution: Verify exact model string:

Terminal window
# Wrong
"model": "minimax-m3"
# Correct
"model": "minimax/minimax-m3"

Problem: 429 Too Many Requests

Solutions:

  • Implement exponential backoff
  • Use multiple containers to distribute load
  • Switch to faster models to reduce request count
  • Contact Hoody support for increased AI credit allocation

Problem: Long wait times for responses

Solutions:

  • Use streaming ("stream": true) for immediate feedback
  • Switch to a faster, smaller model from the catalog
  • Reduce max_tokens parameter
  • Simplify prompts

A dynamic model browser is planned, covering:

  • Live model availability
  • Real-time pricing
  • Capability comparison
  • Performance benchmarks
  • Usage recommendations

Available now: