Ignoring context window limits
Context windows count both input and output tokens together, not just the prompt. When you send a 90,000-token prompt and ask for a 16,000-token response, you exceed the 100,000-token limit and get a hard error. This is especially tricky with agentic workflows that accumulate conversation history. Many developers assume the limit applies only to the input, but the model needs room to generate the full response within that same window. If your application accumulates history without truncation, you will hit the cap quickly. Plan your token budget carefully. Keep only the most recent turns in the context. Use summarization or retrieval to manage long conversations. This prevents unexpected billing spikes and ensures your requests succeed.
Missing streaming headers
Streaming responses require reading the final chunk to get accurate token usage. If you stop reading the stream early, you miss the last piece of data that contains the total token count. This leads to incorrect billing reports and unpredictable resource usage in your application. Always consume the entire stream until the end event. Check the last chunk for the usage field. This ensures you know exactly how much you spent. Streaming also improves perceived latency for users, but you must handle the full response to get complete metrics. Do not abort the connection prematurely unless you have a specific reason. Always read to the end to ensure data integrity and accurate accounting.
Incorrect token counting
Token counting often fails when developers assume a simple character-to-token ratio. Different models use different tokenizers, so one character might not equal one token. This discrepancy can lead to significant overage charges if you estimate costs based on character count. Always use the official tokenizer for the model you are using. Do not guess. If you use an OpenAI-compatible API, use the OpenAI tokenizer, but verify the encoder matches the model. This ensures accurate estimation of costs. Keep a log of actual token usage versus estimated usage to refine your estimates. This helps you budget better and avoid surprises. Accurate counting is critical for financial planning.
Function calling format errors
Function calling format errors occur when the tool definition does not match the expected schema. If you define a tool with incorrect parameter types, the model may return invalid JSON that your code cannot parse. Always validate your tool definitions before sending them to the API. Use a schema validator to check your tool structure. This prevents runtime errors and ensures the model understands your intent. If the model returns an invalid tool call, retry with a clearer description. Never assume the model will always follow your format perfectly. Provide clear examples in the tool definition. This improves reliability and reduces the need for complex error handling in your application.
JSON mode strictness
JSON mode enforces strict schema validation, causing silent failures if your output drifts. When you set response_format to json_object, the model must return valid JSON. If it includes markdown code blocks or extra text, your parser will fail. Always strip markdown wrappers before parsing. Check for trailing commas or invalid characters. This ensures your code remains robust. If you need more flexibility, disable JSON mode and parse the output manually. However, JSON mode is faster and more reliable for structured data. Always test your parser with edge cases. This prevents production crashes and ensures data consistency. Strict mode is a double-edged sword; use it wisely.
Rate limit confusion
Rate limits are often misunderstood as simple request counts per second. In reality, limits may apply per key or per account, and concurrent requests are restricted. If you exceed 300 requests per minute or 8 concurrent requests, your API will return a 429 error. This can disrupt batch processing or real-time applications. Implement exponential backoff in your retry logic. Do not retry immediately. Spread your requests over time. Monitor your usage dashboard to stay within limits. If you need higher throughput, consider using multiple API keys. This distributes the load and prevents bottlenecks. Understanding these limits helps you design resilient applications that handle traffic spikes gracefully.
Crypto top-up timing
Crypto top-ups require upfront payment before any request succeeds. If you do not have sufficient balance, your first request will fail. This is critical for new users who expect to start using the API immediately. Top-up with USDT on TRC20 or USDC on Base. Any whole amount from $20 to $500 is accepted. Bonus credit applies: +5% from $50, +10% from $100, and +15% from $200. This incentivizes larger top-ups. Ensure your balance is positive before making requests. Check your balance frequently to avoid service interruptions. Crypto payments are fast, but confirmations may take a few minutes. Plan your top-up timing to ensure uninterrupted service during high-usage periods.
NSFW refusal misunderstandings
Uncensored models do not refuse lawful adult content, but they still enforce hard limits. Sexual content involving minors is always refused, regardless of the model's base training. This is a non-negotiable policy that applies to all requests. If you send a prompt with borderline content, the model may still return it, but you should expect strict filtering for specific categories. Do not assume "uncensored" means "no rules." It means fewer refusals for lawful adult content. This distinction is important for content creators who want freedom without losing essential safety filters. Always test your prompts to understand the model's behavior. This ensures you get the content you need without unexpected refusals.