Getting Started > Quick Start
Quick Start
Read Atlas research in your application, connect AI tools, or receive updates through webhooks.
Endpoint
All API routes are served from the Atlas functions host.
https://xldyvilhtvxmfgtyjusb.supabase.co/functions/v1/partner-apiAuthorization
Send your scoped key as a bearer token. External callers must never use service-role credentials.
Authorization: Bearer pk_...
Making your first request
Start with a key carrying the sandbox scope. This request returns synthetic data, consumes zero read units and does not send anything. For live cited updates, use a production key carrying the REST API scope with GET /monitor-digest; production also requires API Access and an active allowance.
curl "https://xldyvilhtvxmfgtyjusb.supabase.co/functions/v1/partner-api/sandbox" \ -H "Authorization: Bearer pk_..."
Production API access
A workspace owner or admin can create a scoped API key on this page.
Atlas Professional and Team include the product workspace, configured integrations, developer documentation and an authenticated synthetic no-write sandbox. Production API keys, production MCP and outbound webhooks require Core, Scale or an Enterprise agreement.
API Access Core
$950/month
125,000 read units/month. The production starting tier for normal application and data-pipeline use.
API Access Scale
$1,500/month
250,000 read units/month. For higher-volume applications, monitoring services and data pipelines.
Both tiers include REST keys, MCP research tools, source refreshes and webhooks. Production requests require an enabled package and available read units. API keys do not grant permission to send email or Slack messages.
Contact Pimlico Solutions for Enterprise volumes or rollout support.
Start with a sandbox key to test your requests.
What a read unit means
A read unit is a predictable weight reserved for one authorized API or MCP operation. It is not one returned record and it is not a separate charge for every item in a page. Each additional page is a new request with the same displayed weight. Reuse the same request id only when retrying that exact logical operation.
If the whole Core monthly allowance were used for only one operation type, it would cover approximately:
125,000
regulation detail reads
1 unit each
25,000
standard list, search or event requests
5 units each
5,000
monitor digest requests
25 units each
Most customers use a mix. Metadata, sandbox validation and connector configuration consume zero read units. X-Atlas-* response headers include the request, operation weight, used allowance and remaining allowance so usage can be reconciled without guessing.
What the API supports
Atlas API currently supports the following operations:
- Published regulation list and detail retrieval
- Exact-source freshness evidence and verified-age gates
- Tenant-bound asynchronous exact-source refresh jobs and receipts
- Coverage and taxonomy discovery
- Durable regulation versions and field-level changes
- Monitor digest retrieval
- Durable, cursor-paginated monitor event retrieval
- Read-only watchlist and project context
- Client coverage management
- Signed outbound webhook registration
- MCP query tools and bounded exact-source refresh
- Official TypeScript and Python SDK source packages
How to build it into your stack
| Pattern | Start with | Implementation rule |
|---|---|---|
| Incremental data sync | GET /monitor-events | Store the opaque cursor only after your local transaction commits, then resume from it on the next poll. |
| Regulatory lookup | GET /regulations and /regulations/{id} | Index customer-safe published records by stable Atlas id and retain the source links returned with each record. |
| Verified-age data gate | freshness_mode=require_fresh | Choose a maximum exact-source receipt age and handle stale, unknown and evidence-unavailable responses without weakening the boundary. |
| Refresh a stale exact source | POST /freshness/refresh-jobs | Use one idempotency key for the exact regulation set and age boundary, then poll the tenant-bound job receipt to terminal state. |
| Daily internal briefing | GET /monitor-digest | Request a bounded time window, render the cited result in your own product, and retain the usage receipt headers. |
| Approved agent context | Atlas regulatory MCP | Connect an authenticated MCP client, keep query tools read-only, and permit the bounded exact-source refresh tool only when that action is approved for the workspace. |
| Push into your stack | Signed outbound webhooks | Verify the Atlas signature, deduplicate by event id, return success quickly, and process the event asynchronously. |
Native Slack is not another API response format. Use the separately authorised Slack connector when Atlas should own channel delivery; use a signed webhook when the customer's service should own the downstream action.
Query the regulatory question
Atlas exposes regulatory facts as composable dimensions rather than forcing customers to know our internal tables. Filters combine with AND semantics. Every returned record carries stable identity, source provenance and normalized Atlas Data dimensions; it never infers customer applicability or authorizes a delivery action.
Query contract version: 2026-09-05.regulations-query.v2. Pin this value in production clients and review the machine-readable contract before adopting a later version.
| Customer question | Query dimensions | Returned evidence |
|---|---|---|
| What changed? | q, action_type, regulatory_event_type | Title, overview, document type, event classification and cited source. |
| Where and who? | jurisdiction, subdivision, authority_id, authority_name | Exact jurisdiction and canonical authority identity where Atlas has one. |
| Which business area? | vertical, significance, lifecycle_stage | Normalized Atlas Data dimensions for vertical, materiality and regulatory stage. |
| When does it matter? | published_from/to, effective_from/to | Publication, effective and customer-publication dates kept as separate facts. |
| What changed since my last run? | updated_from, updated_to, cursor | A bounded incremental window with an opaque replay-safe pagination cursor. |
| How recently was the source checked? | freshness_mode, freshness_max_age_seconds | Exact source-scan receipt time and outcome, kept separate from Atlas row and publication timestamps. |
EU AI consultations changed since 1 August
GET /regulations?q=consultation&jurisdiction=EU&vertical=AI&updated_from=2026-08-01T00:00:00ZActionable payments items from one authority
GET /regulations?authority_id={uuid}&vertical=Payments&significance=Actionable&published_from=2026-08-01Material items taking effect next quarter
GET /regulations?min_event_severity=3&effective_from=2026-10-01&effective_to=2026-12-31Source checks
Results include when Atlas last checked the original source. This is separate from the record’s publication and update dates. Reading a record does not recheck its source.
Standard read
Use freshness_mode=standard to receive the current published record with honest fresh, stale or unknown evidence.
Require a recent check
Use freshness_mode=require_fresh withfreshness_max_age_seconds. Atlas fails the complete read when any result lacks a successful in-window receipt.
To request a new check, usePOST /freshness/refresh-jobs and anIdempotency-Key, then poll/freshness/refresh-jobs/{job_id}. Creation costs 25 read units; polling costs 1. The limit is 25 jobs per workspace per UTC day. The default maximum age is 26 hours; source-check schedules vary.
Interactive query explorer
Build the regulatory question in the browser, copy an official SDK example, and use live taxonomy values when you have a scoped key. Keys entered here remain in component memory only and are not stored by the documentation page.
Regulation query explorer
Build a published-corpus query, copy SDK-ready code, or run it with a key kept only in this browser session.
GET /regulations?jurisdiction=EU&vertical=AI&freshness_mode=standard&freshness_max_age_seconds=93600&limit=25
curl "https://xldyvilhtvxmfgtyjusb.supabase.co/functions/v1/partner-api/regulations?jurisdiction=EU&vertical=AI&freshness_mode=standard&freshness_max_age_seconds=93600&limit=25" \ -H "Authorization: Bearer $ATLAS_API_KEY"
API Reference
Use OpenAPI or Postman for the full contract. The table below keeps the first integration path short.
| Regulatory corpus | ||||
|---|---|---|---|---|
| GET | /query-capabilitiesQuery capabilities | Public machine-readable discovery contract for filters, dimensions, sync semantics and query examples. | 0 RU | |
| GET | /coverageCoverage discovery | Published record counts, freshness bounds and live canonical dimension values. | 0 RU | |
| GET | /taxonomiesTaxonomy discovery | Versioned dimension semantics plus live values accepted by regulatory queries. | 0 RU | |
| GET | /regulationsPublished regulations | Published regulatory records with Atlas Data dimensions, exact-source freshness evidence, lifecycle and keyset pagination. | 5 RU | |
| GET | /regulations/{id}Regulation detail | Record details, tags and related object IDs, with an optional limit on the age of verification. | 1 RU | |
| GET | /regulations/{id}/versionsRegulation versions | Durable customer-safe snapshots for the currently published regulation. | 5 RU | |
| GET | /regulations/{id}/changesRegulation changes | Field-level before/after values across successive published versions. | 5 RU | |
| POST | /freshness/refresh-jobsRequest source refresh | Idempotent stale-only asynchronous refresh for the exact active sources behind 1-10 published regulations. | 25 RU | |
| GET | /freshness/refresh-jobs/{job_id}Poll source refresh | Tenant-bound state and exact source, retry, queue-trace, source-check receipt and terminal outcome evidence. | 1 RU | |
| Monitor data | ||||
| GET | /monitor-digestMonitor digest | Published regulatory updates for a time window, with source links, capture metadata and exact-source freshness evidence. | 25 RU | |
| GET | /monitor-eventsMonitor events | Cursor-paginated published events with freshness receipts. Every object is explicitly non-authoritative for destination delivery. | 5 RU | |
| Workspace context | ||||
| GET | /watchlistsAlert routes | Read-only alert routing rules and connector destinations attached to them. | 5 RU | |
| GET | /projectsProjects | Project and task summaries, including Jira and Confluence link counts. | 5 RU | |
| GET | /clientsClient coverage | Partner-scoped client profiles and coverage used to route regulatory briefings. | 5 RU | |
| Events and sandbox | ||||
| POST | /connectorsConnector endpoints | Register a customer-owned HTTPS endpoint for signed outbound events. | 0 RU | |
| POST | /connectors/{id}/events/{event_id}/reconcileDelivery recovery | Record receiver evidence for an uncertain delivery. This does not queue or send; replay is a separate request. | 0 RU | |
| POST | /sandbox/validateSandbox validation | Validate auth and payload shape without writing production records. | 0 RU | |
SDK release candidates
The checked-in TypeScript and Python clients wrap the same OpenAPI contract. Both expose regulatory queries, coverage, taxonomy, version history, monitor reads and Atlas request/read-unit receipts. They apply bounded timeouts and retry only idempotent GET requests. Their distributable artifacts are verified, but the registry packages are not yet published.
TypeScript
Registry release pending@pimlico/atlas-apiNode 20+ and standards-compatible fetch runtimes.
Python
Registry release pendingpimlico-atlas-apiPython 3.10+ with no runtime dependencies.
Install commands will appear only after signed registry readback is recorded in the API changelog. Until then, use the OpenAPI-generated contract or the checked-in SDK source provided during assisted onboarding.
MCP
Connect a remote HTTP MCP client to https://xldyvilhtvxmfgtyjusb.supabase.co/functions/v1/mcp-regulatory. Choose OAuth and sign in to your Atlas workspace. Server applications can use a production key with the mcp scope for research tools.
- Find research with
search_regulations, or usequery_regulationsfor exact filters. Coverage and taxonomy tools list the available jurisdictions, authorities and verticals. - Check source dates in the results. To request a new check for up to 10 records, use
request_regulatory_refresh, then poll its job. The source-check limits above apply. - OAuth clients can preview email or Slack messages for configured destinations. Sending requires confirmation of the exact preview, workspace permission and an idempotency key. Research API keys cannot send messages. Other app deliveries are available through Atlas’s integration screens.
Access stays tied to the selected workspace and ends if membership or authorization is revoked. Production access requires the MCP/API package and available read units. Use tools/list for tool schemas andhttps://xldyvilhtvxmfgtyjusb.supabase.co/functions/v1/partner-api/query-capabilities for supported filters.
OAuth details
OAuth authorization code plus PKCE is the primary interactive-client path. Atlas binds OAuth access tokens to the exact MCP resource and a live Atlas user, client, and session. Refreshing a token keeps the selected workspace.
Outbound events
Outbound events use signed JSON envelopes and stable Atlas event ids. Use them when a customer-owned receiver should decide what to do next. Registering a webhook does not authorize Slack: the endpoint, subscribed event type, route policy, signature check, retry state and delivery receipt are separate controls.
Error handling
Protected routes fail closed without a valid scoped key, package entitlement and active allowance. Send a stable Idempotency-Key (or X-Request-Id) when retrying. Atlas returns the canonical request id and read-unit receipt in X-Atlas-* response headers.
Rate limits
Core defaults to 60 requests per minute with 15 immediately available burst tokens; Scale defaults to 120 per minute with 30 burst tokens. Contracted organization overrides can differ. Follow pagination.next_cursor until has_more is false and treat RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and X-Atlas-Rate-Limit-Policy as the authoritative receipt.
Only API_RATE_LIMITED includes Retry-After. Read-unit exhaustion or a capped-overage decision is not transient and must not be retried as a rate limit. The official SDKs keep one X-Request-Id across bounded GET retries and never retry earlier than the server instructs.
