Arabic routing moved off ALLaM, and four placeholder fields became real
Changed: Arabic no longer routes to ALLaM
IBM withdrew ALLaM. Verified by enumerating available models across six watsonx regions on 2026-09-12: zero ALLaM models in any of them. Arabic now routes to Claude.provideracceptsclaudeandgemini.allamis no longer a valid value and returns a 400.X-NAWA-Providerwill never returnallam./v1/translateand/v1/moderatepreviously attempted ALLaM first and fell back to Claude on failure. Because the model no longer exists, every request to those two endpoints was paying the full watsonx timeout, roughly 38 seconds, before falling through. They now call Claude directly. Measured after the change:/v1/classifyon Arabic went from 38.4s to 4.6s.
Changed: /v1/classify fields that used to be placeholders
If you built against any of these, re-read the field table.suggested_reply.textreturned NAGL’s internal reasoning for choosing reply over reaction, in English, withdirection: "rtl"attached to it. It now returns an actual draft reply in the commenter’s own language and dialect. The reasoning moved to a newreasoningfield.dialectwas hardcoded to"gulf"for all Arabic text. It now returns the detected dialect:gulf,egyptian,levantineormsa.dialect_confidencereturned the classifier’s overall confidence, not a dialect score. It is now a real dialect confidence.modelreported a model that had not run. It now reports the model that actually served the request.tokens_usedwas alwaysnullon every endpoint. It now returns input plus output tokens.
Fixed: /v1/rubric/classify returned categories you did not define
The endpoint built your rubric into a prompt, then passed the answer through a normalizer that only understood NAWA’s own intent taxonomy, so your categories could not survive. It then fell back to those internal labels and presented them as yours. A request with five Arabic categories came back as other at 0.5.It now returns your category names, character for character, and drops anything that was not in your rubric. An empty array is a valid answer and is never padded with a generic category. If the model returns something unusable, you get a rubric_unparseable 502 and are not charged, rather than a plausible wrong answer.Documentation corrections
Several pages described behaviour the API never had. Corrected:/v1/rubric/classifydocumentedcategoriesas an array of strings. The API requires objects with aname; the documented example returned a 400. The response fields documented (category,category_confidence,scores,dialect) do not exist./v1/healthdocumented servicesapi,classificationandcachewrapped in the standard envelope. It actually returns a bare object withdatabase,redisandnagl.- The sandbox allowance is 100 requests per account across all sandbox keys ever created, not 500 per month per endpoint.
/v1/rubric/classifydoes not use the semantic cache, so it never returnsX-NAWA-Cache: HIT.- Dialect detection is a deterministic marker matcher, not a language model, and the previously published “100% accuracy” figure has been removed.
/report structure and tagging update
Changed
/reportendpoint response structure updated. Sections now use plain-English keys (tldr,headline_finding,comment_types) instead of Roman-numeral keys.- Every percentage in report tables is now tagged
COUNT,ESTIMATE, orUNVERIFIED. - Pro tier reports now open with a TL;DR section.
Fixed
- OpenAPI spec envelope schema corrected to match actual handler response.
Intelligence Report API + English support
The biggest update since launch. Two major additions:New endpoint: POST /v1/report
Generate structured audience intelligence reports from comment data. Feed in comments, get back clusters, narratives, sentiment analysis, spam detection, and strategic recommendations.- Basic tier ($0.50) - 8 sections: executive summary, clusters, narratives, sentiment, top commenters, spam detection, recommendations, channel health
- Pro tier ($1.50) - 10 sections: everything in Basic plus repeat commenter analysis with superfan detection and a content brief with episode concepts
- Returns both markdown and pre-parsed JSON sections
- Min 10 comments, max 500 per report
- Full documentation
English comment support
All classification and reply endpoints now support English comments alongside Arabic. Language is auto-detected. English routes to Claude, Arabic routes to ALLaM. Same pricing, same API shape.dialect and dialect_confidence return null for English text.Claude fallback for Translate and Moderate
Automatic Claude Haiku 4.5 fallback added to/v1/translate and /v1/moderate. If ALLaM is unavailable, requests seamlessly fall back to Claude with no user action required./v1/translate— falls back to Claude for translation when ALLaM is down/v1/moderate— falls back to Claude for moderation when ALLaM is downfallback_used— new boolean field in all endpoint responses indicating whether the fallback provider was usedX-NAWA-Provider— response header now reflects the active provider (allamorclaude)
New endpoints: Translate, Detect, and Moderate
Three new endpoints expanding NAWA from comment classification to a full Arabic language intelligence platform.POST /v1/translate— dialect-aware Arabic-English translation with tone control. Supports Gulf, Egyptian, Levantine, and MSA. 5 credits per request ($0.005).POST /v1/detect— lightweight language and dialect detection using local NAGL modules only. Returns in under 100ms with no AI model call. 2 credits per request ($0.002).POST /v1/moderate— dialect-aware Arabic content moderation. 7 categories (profanity, hate speech, harassment, sexual, spam, self-harm, violence) with severity scores, flagged terms, and cleaned text. 4 credits per request ($0.004).
NAWA API Platform v1.0 — Live
Self-serve API platform for Arabic comment classification, powered by HUMAIN’s ALLaM 13B.- 8 API endpoints live at api.trynawa.com/v1 — classify, rubric, reply, feedback, comments, analytics, health, usage
- Developer console at trynawa.com/developers/keys with Google OAuth and magic link authentication
- Credit-based billing via Stripe with 50, 500 packs. 1,000 credits = $1.00.
- Free tier — 100 lifetime requests, 14-day key expiry, no credit card required. Same AI models as paid.
- TypeScript SDK (@nawalabs/sdk) and Python SDK (nawa-sdk)
- Interactive docs at developers.trynawa.com with OpenAPI 3.1 spec
- Semantic cache — identical or similar requests served free from cache
- RLHF calibration loop — pattern applicator and calibration endpoints for continuous accuracy improvement