Changelog
API updates, bug fixes, and infrastructure improvements. Breaking changes always ship with a new API version and 90 days notice.
Versioning policy. The current stable API version is v1.
Non-breaking additions (new fields, new endpoints) ship continuously under v1. Breaking changes introduce a
new version; the prior version remains supported for a minimum of 90 days with a migration guide provided.
Dates are approximate during the early access period. Semantic versioning is used for internal builds; external changelog entries track meaningful milestones.
Initial Early Access Release
The Polari API is now available to private beta customers. All four pipeline layers are deployed and operational.
- Layer 0 — Token Intelligence: quality scoring, 384-dim embeddings, semantic deduplication
- Layer 1 — Semantic Analysis: named entity recognition (PERSON, ORG, GPE, LOC), sentence-level embeddings, sentiment scoring
- Layer 2 — Story Clustering: two-stage cross-source clustering with confidence scoring
- Layer 3 — Intelligence Graph: entity relationship networks, trend detection, constellation visualization
- Core endpoints:
/v1/articles,/v1/entities,/v1/clusters,/v1/relationships,/v1/graph,/v1/trends - Bearer token authentication via
Authorizationheader - Per-key rate limiting with
X-RateLimit-*response headers
- Containerized microservices per layer, independently deployable
- PostgreSQL for article and entity persistence, ChromaDB for vector storage, Redis for coordination
- Nginx reverse proxy with TLS termination
- Processing cadence: Layer 0 real-time, Layer 1 15-min batches, Layer 2 30-min batches, Layer 3 hourly
Layer 2 — Clustering reliability improvements
- Singleton cluster problem: articles ingested within the same batch window could not discover each other as candidates, producing single-article clusters instead of merged stories
- Added a re-clustering pass at the end of each batch cycle so intra-batch articles are evaluated against one another before results are committed
- Backfill script deployed to retroactively re-cluster historical articles that were affected
- Cluster confidence scores are now more conservative for small clusters (fewer than 3 sources), reducing false-positive groupings
Layer 0 — published_date field patch
published_datewas not being persisted correctly for a subset of ingested articles; affected articles returnednullon thepublished_atfield- Root cause: date parsing edge cases in RSS feed ingestion when the feed omitted or malformed the pubDate field
- Historical articles with
nullpublished dates are being reprocessed incrementally
- Ingestion pipeline now falls back to
updatedanddc:datefeed fields before leavingpublished_dateas null - Articles with unresolvable publish dates are still ingested but flagged with a
date_confidence: "low"metadata field (visible in Layer 0 response)
Layer 1 — Entity extraction deployed
Named entity recognition is now live across all ingested articles. Entities are extracted per article and stored as typed, searchable records linked to their source articles.
- Entity types supported:
PERSON,ORG,GPE,LOC,EVENT - Per-entity sentiment scoring alongside article-level sentiment
/v1/entitiesendpoint with filtering by type, mention count, and time range/v1/entities/{id}/timelineand/v1/entities/{id}/sentimentsub-endpoints
- Entity variant normalization is in progress — surface forms such as "Strait of Hormuz" and "Hormuz" may appear as separate entities in the current release. A normalization pass is planned for an upcoming update.
On the roadmap
The following are actively in development or planned for the near term. These are not commitments — dates and scope may change.
- Entity normalization — collapsing surface-form variants into canonical entity records
- Python and JavaScript SDKs
- Webhook subscriptions (
cluster.created,trend.detected,entity.spike) - Customer dashboard for API key management and usage monitoring
- Historical data API — query articles and clusters beyond the rolling window
- Extended language support — Spanish and French (targeted Q3 2026)