MI

mistral-common-errors

A diagnostic guide for common Mistral AI API errors, status codes, and connectivity issues.

Install

mkdir -p .claude/skills/mistral-common-errors && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6641" && unzip -o skill.zip -d .claude/skills/mistral-common-errors && rm skill.zip

Installs to .claude/skills/mistral-common-errors

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Diagnose and fix Mistral AI common errors and exceptions.
57 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Test API connectivity and authentication
  • Validate message structures and tool call IDs
  • Trim conversation history to fit context limits
  • Handle ESM import errors in Node.js

How it works

The skill provides a diagnostic workflow to verify API connectivity and a reference library of common HTTP error codes with corresponding code-level fixes and retry logic.

Inputs & outputs

You give it
Failed API request or error message
You get back
Corrected code implementation or diagnostic status

When to use mistral-common-errors

  • Debug API errors
  • Fix 401 unauthorized errors
  • Verify API key status
  • Troubleshoot streaming failures

About this skill

Mistral AI Common Errors

Overview

Quick reference for diagnosing and fixing Mistral AI API errors. Covers HTTP status codes, SDK-specific issues, streaming failures, and tool calling problems with real solutions.

Prerequisites

  • Mistral AI SDK installed
  • MISTRAL_API_KEY configured
  • Access to application logs

Instructions

Step 1: Quick Diagnostic

set -euo pipefail
# Test API connectivity and auth
curl -s -w "\nHTTP Status: %{http_code}\n" \
  -H "Authorization: Bearer ${MISTRAL_API_KEY}" \
  https://api.mistral.ai/v1/models | jq '.data[].id' 2>/dev/null || echo "FAILED"

# Check env
echo "Key set: ${MISTRAL_API_KEY:+yes}"
echo "Key length: ${#MISTRAL_API_KEY}"

Step 2: Error Reference


401 Unauthorized

Error: Authentication failed. Invalid API key.

Causes: Key missing, expired, revoked, or wrong workspace.

Fix:

const apiKey = process.env.MISTRAL_API_KEY;
if (!apiKey) throw new Error('MISTRAL_API_KEY is not set');

// Test the key
const client = new Mistral({ apiKey });
try {
  await client.models.list();
} catch (e: any) {
  if (e.status === 401) {
    console.error('API key invalid — regenerate at console.mistral.ai');
  }
}

Verify manually:

set -euo pipefail
curl -H "Authorization: Bearer ${MISTRAL_API_KEY}" https://api.mistral.ai/v1/models

429 Too Many Requests

Error: Rate limit exceeded. Retry-After: 60

Causes: Exceeded RPM (requests/min) or TPM (tokens/min) for your tier.

Fix:

async function withBackoff<T>(fn: () => Promise<T>, maxRetries = 5): Promise<T> {
  for (let i = 0; i <= maxRetries; i++) {
    try {
      return await fn();
    } catch (error: any) {
      if (error.status !== 429 || i === maxRetries) throw error;
      const wait = Math.min(2 ** i * 1000, 60_000);
      console.warn(`Rate limited, retrying in ${wait}ms...`);
      await new Promise(r => setTimeout(r, wait));
    }
  }
  throw new Error('Max retries exceeded');
}

Check your limits: Visit console.mistral.ai/limits for workspace RPM/TPM caps.


400 Bad Request — Invalid Model

{"message": "Unknown model: mistral-ultra"}

Fix: Use valid model IDs:

const VALID_MODELS = [
  'mistral-large-latest',
  'mistral-small-latest',
  'codestral-latest',
  'pixtral-large-latest',
  'mistral-embed',
  'mistral-moderation-latest',
] as const;

List available models dynamically:

set -euo pipefail
curl -H "Authorization: Bearer ${MISTRAL_API_KEY}" \
  https://api.mistral.ai/v1/models | jq -r '.data[].id' | sort

400 Bad Request — Invalid Messages

{"message": "messages must be a non-empty array"}

Fix: Validate message structure before sending:

function validateMessages(messages: any[]): void {
  if (!messages?.length) throw new Error('Messages array empty');
  const validRoles = ['system', 'user', 'assistant', 'tool'];
  for (const msg of messages) {
    if (!validRoles.includes(msg.role)) {
      throw new Error(`Invalid role: "${msg.role}"`);
    }
    if (!msg.content && !msg.toolCalls) {
      throw new Error(`Message with role "${msg.role}" has no content`);
    }
  }
}

400 Bad Request — Tool Call Errors

{"message": "tool_call_id is required for tool messages"}

Fix: Every tool result must include the matching toolCallId:

// After receiving tool_calls from the model
for (const call of response.choices[0].message.toolCalls) {
  const result = await executeFunction(call.function.name, call.function.arguments);
  messages.push({
    role: 'tool',
    name: call.function.name,
    content: JSON.stringify(result),
    toolCallId: call.id,  // REQUIRED — must match call.id
  });
}

413 / Context Length Exceeded

Error: Maximum context length exceeded

Fix: Trim conversation history, keeping system message:

function trimToFit(messages: any[], maxChars = 100_000): any[] {
  const system = messages.find(m => m.role === 'system');
  const rest = messages.filter(m => m.role !== 'system');
  const kept: any[] = system ? [system] : [];
  let chars = system?.content?.length ?? 0;

  // Keep most recent messages that fit
  for (let i = rest.length - 1; i >= 0; i--) {
    const msgChars = JSON.stringify(rest[i]).length;
    if (chars + msgChars > maxChars) break;
    chars += msgChars;
    kept.splice(system ? 1 : 0, 0, rest[i]);
  }
  return kept;
}

500/503 Server Error

Error: Internal server error

Causes: Mistral service issue (temporary).

Fix:

class CircuitBreaker {
  private failures = 0;
  private lastFailure = 0;
  private readonly threshold = 5;
  private readonly resetMs = 60_000;

  async call<T>(fn: () => Promise<T>): Promise<T> {
    if (this.failures >= this.threshold) {
      if (Date.now() - this.lastFailure < this.resetMs) {
        throw new Error('Circuit breaker open — Mistral service unavailable');
      }
      this.failures = 0; // Reset after timeout
    }
    try {
      const result = await fn();
      this.failures = 0;
      return result;
    } catch (error: any) {
      if (error.status >= 500) {
        this.failures++;
        this.lastFailure = Date.now();
      }
      throw error;
    }
  }
}

ERR_REQUIRE_ESM (Node.js)

Error [ERR_REQUIRE_ESM]: require() of ES Module not supported

Cause: @mistralai/mistralai is ESM-only since v1.x.

Fix: Either use import syntax (recommended) or dynamic import:

// Option 1: Convert to ESM
// package.json: "type": "module"
import { Mistral } from '@mistralai/mistralai';

// Option 2: Dynamic import in CJS
const { Mistral } = await import('@mistralai/mistralai');

Network Timeout

Error: Request timeout after 30000ms

Fix:

const client = new Mistral({
  apiKey: process.env.MISTRAL_API_KEY,
  timeoutMs: 60_000, // Increase for long completions
});

// For streaming, the timeout applies to initial connection
// Individual chunks have no timeout

Escalation Path

  1. Collect evidence with mistral-debug-bundle
  2. Check status.mistral.ai
  3. Contact support via Discord or console.mistral.ai

Error Handling

ErrorCauseSolution
401Auth failureRegenerate key at console.mistral.ai
429Rate limitBackoff + check tier limits
400Bad paramsValidate model, messages, tools
413Context overflowTrim conversation history
5xxService errorRetry with circuit breaker
ERR_REQUIRE_ESMCJS importUse ESM import syntax

Resources

Next Steps

For comprehensive debugging, see mistral-debug-bundle.

When not to use it

  • When the API key is missing or invalid
  • When the service is experiencing a total outage

Prerequisites

Mistral AI SDKMISTRAL_API_KEYAccess to application logs

Limitations

  • Context trimming logic keeps only the system message and recent history
  • Circuit breaker threshold is fixed at 5 failures

How it compares

It provides pre-written TypeScript snippets for common error handling patterns like circuit breakers and backoff, rather than requiring manual implementation.

Compared to similar skills

mistral-common-errors side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
mistral-common-errors (this skill)127dCautionIntermediate
n8n-expression-syntax64moNo flagsBeginner
claude-in-chrome-troubleshooting22moReviewIntermediate
openrouter-common-errors327dCautionIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

You might also like

n8n-expression-syntax

czlonkowski

Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows.

6111

claude-in-chrome-troubleshooting

trailofbits

Diagnose and fix Claude in Chrome MCP extension connectivity issues. Use when mcp__claude-in-chrome__* tools fail, return "Browser extension is not connected", or behave erratically.

211

openrouter-common-errors

jeremylongshore

Execute diagnose and fix common OpenRouter API errors. Use when troubleshooting failed requests. Trigger with phrases like 'openrouter error', 'openrouter not working', 'openrouter 401', 'openrouter 429', 'fix openrouter'.

39

linear-common-errors

jeremylongshore

Diagnose and fix common Linear API errors. Use when encountering Linear API errors, debugging integration issues, or troubleshooting authentication problems. Trigger with phrases like "linear error", "linear API error", "debug linear", "linear not working", "linear authentication error".

16

gamma-common-errors

jeremylongshore

Debug and resolve common Gamma API errors. Use when encountering authentication failures, rate limits, generation errors, or unexpected API responses. Trigger with phrases like "gamma error", "gamma not working", "gamma API error", "gamma debug", "gamma troubleshoot".

12

groq-common-errors

jeremylongshore

Diagnose and fix Groq common errors and exceptions. Use when encountering Groq errors, debugging failed requests, or troubleshooting integration issues. Trigger with phrases like "groq error", "fix groq", "groq not working", "debug groq".

12

Search skills

Search the agent skills registry