Stablecoin Status
Evidence-Grade Regulatory Signals
Machine-readable status metadata + replayable evidence artifacts for enterprise monitoring workflows.
Gold vs Diamond Tier
Two access levels for different integration needs. Gold/Diamond refer to feature tiers in this documentation; commercial plan naming may differ.
| Feature | GOLD List | DIAMOND Single |
|---|---|---|
| Endpoint | /stablecoin | /stablecoin/{symbol} |
| Coverage | 105+ stablecoins | Single asset |
| MiCA Status | Status + reason_code | Full mica_basis object |
| Risk Flags | Array of codes | Objects with severity |
| Sources | Single ref | Full provenance chain |
| Evidence Block | — | Hash + pack_id + anchor |
| Use Case | Dashboards | Audit retention |
Endpoints
Gold: Stablecoin List
/api/v1/feeds/stablecoin
curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin
Response (abbreviated):
{
"schema_version": "stablecoin-status/1.0",
"as_of": "2026-01-26T15:33:28Z",
"count": 105,
"data": [
{
"symbol": "USDT",
"issuer_reported": "Tether",
"mcap_usd": 186400000000,
"mica_status": "flagged",
"mica_reason_code": "EU_AUTHORIZATION_NOT_VERIFIED",
"risk_flags": [{"code": "mica_risk", "severity": "medium"}]
}
],
"disclaimer": "Infrastructure data only. Not legal advice or certification."
}
Diamond: Single Asset Enterprise Status
/api/v1/feeds/stablecoin/{symbol}
curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin/RLUSD
Full RLUSD Response:
{
"schema_version": "stablecoin-status/1.0",
"as_of": "2026-01-26T15:33:28Z",
"symbol": "RLUSD",
"name": "Ripple USD",
"issuer_reported": "Ripple",
"mcap_usd": 1415230357,
"reserve_model": "fiat-backed",
"mica_status": "pending",
"mica_basis": {
"source": "feedoracle:internal_research",
"observed_at": "2026-01-15T00:00:00Z",
"reason_code": "PENDING_CONFIRMATION"
},
"risk_flags": [
{
"code": "mica_risk",
"severity": "low",
"reason_code": "PENDING_CONFIRMATION"
}
],
"sources": [
{"type": "market_data", "ref": "defillama:stablecoins", "observed_at": "2026-01-26T15:33:28Z"},
{"type": "issuer_attribution", "ref": "feedoracle:internal", "observed_at": "2026-01-15T00:00:00Z"},
{"type": "compliance_research", "ref": "feedoracle:internal", "observed_at": "2026-01-15T00:00:00Z"}
],
"evidence": {
"content_hash": "sha256:922f0666f7a1d07e2ab3e8f85d040793c787bc9d00ce5c5191cf3e981347f119",
"evidence_pack_id": "stablecoin-rlusd-20260126153328",
"anchor_ref": {"polygon_tx": null, "xrpl_tx": null}
},
"disclaimer": "Infrastructure data only. Not legal advice or certification."
}
Authentication
All API requests require an X-API-Key header.
With API Key (Success)
curl -H "X-API-Key: YOUR_API_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin/RLUSD
Without API Key (Error)
curl https://api.feedoracle.io/api/v1/feeds/stablecoin/RLUSD
# Response: HTTP 401
{
"error": {
"code": "UNAUTHORIZED",
"message": "X-API-Key header required"
},
"request_id": "req_7f3a2b1c",
"as_of": "2026-01-26T15:33:28Z"
}
API Key Provisioning
API keys are issued per account and provide plan-based access to endpoints.
| Plan | Access |
|---|---|
| Free | Limited requests, Gold endpoints only |
| Developer/Professional | Gold endpoints, higher rate limits |
| Enterprise | Gold + Diamond endpoints, dedicated support |
To obtain an API key, visit /contact or sign up through the dashboard.
X-API-Key: <your_key>
Response Headers & Observability
Request Correlation
Error responses include a request_id field for support correlation. Success responses do not currently include request correlation headers.
| Header / Field | Status |
|---|---|
request_id (in error body) | Included in error responses |
X-Request-Id (header) | Not currently exposed |
X-RateLimit-* (headers) | Not currently exposed |
For observability, clients should log the as_of timestamp and evidence_pack_id from successful responses.
Rate Limits & Refresh
| Parameter | Value |
|---|---|
| Rate Limit | 100 requests/minute per API key |
| Data Refresh | Best-effort, typically 5-15 minutes |
| Caching | Clients should rely on as_of timestamp |
| ETag/If-None-Match | Not currently supported |
as_of field is the observation timestamp for this snapshot.
Use it for point-in-time verification and cache invalidation logic.
Data Freshness
| Aspect | Behavior |
|---|---|
as_of | Observation timestamp when snapshot was generated (UTC) |
| Refresh cadence | Best-effort; typically every 5-15 minutes |
| Source outage | Stale snapshot may be served; check as_of age |
| Guaranteed SLA | Not currently defined; contact for enterprise SLA |
Errors
Standard error response format:
{
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
},
"request_id": "req_abc123",
"as_of": "2026-01-26T15:33:28Z"
}
HTTP Status Codes
| Code | Error Code | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid request format or parameters |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | API key lacks permission for this endpoint |
| 404 | NOT_FOUND | Symbol not found or endpoint does not exist |
| 429 | RATE_LIMITED | Too many requests, retry after cooldown |
| 500 | INTERNAL_ERROR | Server error, contact support if persistent |
Pagination & Filtering
GET /api/v1/feeds/stablecoin
| Feature | Status |
|---|---|
| Pagination | Not paginated (small set, ~40 items) |
| Filtering | Not currently supported |
| Sorting | Default: descending by mcap_usd |
| Limit parameter | Not currently supported |
The list endpoint returns all tracked stablecoins in a single response. For large-scale filtering needs, contact us for enterprise solutions.
OpenAPI / Schema
Machine-readable schema:
/docs/stablecoin-status-schema.yaml
StablecoinStatus (compact)
{
"type": "object",
"required": ["schema_version","as_of","symbol","mica_status","evidence"],
"properties": {
"schema_version": {"type": "string"},
"as_of": {"type": "string", "format": "date-time"},
"symbol": {"type": "string"},
"mica_status": {"enum": ["verified","flagged","pending","not_applicable","unknown"]},
"evidence": {"type": "object"}
}
}
Field Reference
| Field | Type | Description |
|---|---|---|
schema_version | string | Schema identifier for versioning |
as_of | ISO 8601 | Snapshot timestamp (UTC) |
issuer_reported | string | Attributed issuer name (not legal verification) |
mcap_usd | integer | Circulating supply in USD |
reserve_model | enum | fiat-backed, crypto-backed, hybrid, treasury-backed, yield-bearing, unknown |
| Field | Type | Description |
|---|---|---|
mica_status | enum | Heuristic classification (see below) |
mica_basis.source | string | Data source for MiCA assessment |
mica_basis.observed_at | ISO 8601 | When assessment was recorded |
mica_basis.reason_code | enum | Machine-readable reason |
risk_flags[] | array | Structured flags with code, severity, reason_code |
sources[] | array | Provenance chain (type, ref, observed_at) |
| Field | Type | Description |
|---|---|---|
evidence.content_hash | string | SHA256 of canonical JSON (core data) |
evidence.evidence_pack_id | string | Unique snapshot identifier |
evidence.anchor_ref | object | On-chain anchor refs (nullable) |
disclaimer | string | Scope boundary statement |
MiCA Status & Reason Codes
Neutral metadata classification. Not a legal determination.
v2.6.0 — 7 status values, ESMA cross-validated
| Status | Reason Code | Meaning | Evidence Class |
|---|---|---|---|
verified | EU_AUTHORIZATION_VERIFIED | EU/EEA EMI license confirmed — ESMA register, EU27+IS/LI/NO only | REGISTER |
non_eu_regulated | NON_EU_REGULATED | Regulatory license outside EU/EEA (MAS, CFTC…). Not MiCA-authorized. register_scope: NON_EU | REGISTER |
nav_instrument | NAV_INSTRUMENT_OUT_OF_SCOPE | Tokenized fund / yield instrument. Peg deviation N/A — use NAV premium/discount. Outside EMT/ART scope. | ONCHAIN_INFERENCE |
flagged | NO_MATCH_IN_ESMA_REGISTER_AS_OF_DATE | Explicit negative ESMA check — no EU authorization found | REGISTER_NEGATIVE |
pending | PENDING_CONFIRMATION | EU license application reported; not yet in ESMA register | ISSUER_DISCLOSURE |
not_applicable | DECENTRALIZED_PROTOCOL | No central issuer — DeFi/algorithmic, exempt from EMT/ART | ATTESTATION |
unknown | INSUFFICIENT_PUBLIC_EVIDENCE | Insufficient public data for classification | MARKET_DATA |
NAV Instruments
NAV instruments are tokenized funds or yield-bearing instruments where the token price reflects Net Asset Value — not a fiat peg. Peg deviation is meaningless for these.
Classified as NAV instrument when:
- Symbol matches known set:
USYC, USDY, BUIDL, USTB, TBILL, YLDS, FIUSD, BENJI, OUSG - OR peg deviation >5% (indicative of NAV pricing, not peg failure)
Examples: USYC (+11.7% NAV premium), USDY (+10.6%), TBILL (+13.5%), BUIDL (fund NAV)
⚠ For NAV instruments, use nav_premium_pct field, not peg_dev_pct.
Non-EU Regulated
Issuers with a regulatory license outside the EU/EEA. They appear in the ESMA data with a non-EU country code and are explicitly not counted as MiCA-authorized.
- USDG — MAS Singapore / DBS Bank (country: SG)
Field: register_scope: "NON_EU" — evidence class remains REGISTER.
Evidence Block: Deterministic Hashing
The content_hash enables independent verification of data integrity.
Hash Scope
The hash is computed over the core data object containing exactly these fields:
{"issuer_reported":"Ripple","mcap_usd":1415230357,"mica_status":"pending",
"name":"Ripple USD","reserve_model":"fiat-backed","symbol":"RLUSD"}
Metadata (as_of, sources, evidence) is excluded from hashing.
Canonicalization Rules
| Rule | Specification |
|---|---|
| Encoding | UTF-8 |
| Key Order | Sorted alphabetically |
| Whitespace | No insignificant whitespace |
| Separators | , and : only |
| Numbers | Integer (no trailing decimals) |
Hash Verification Steps
- Extract the six core fields from the API response
- Serialize to canonical JSON (sorted keys, compact)
- Encode the JSON string as UTF-8 bytes
- Compute SHA256 digest of the bytes
- Compare
sha256:+ hex withevidence.content_hash
# Python verification
import json, hashlib
core = {"issuer_reported":"Ripple","mcap_usd":1415230357,
"mica_status":"pending","name":"Ripple USD",
"reserve_model":"fiat-backed","symbol":"RLUSD"}
canonical = json.dumps(core, sort_keys=True, separators=(',',':'))
computed = "sha256:" + hashlib.sha256(canonical.encode()).hexdigest()
# Compare with evidence.content_hash
Common Use Cases
Exchanges
Listing risk dashboards with MiCA status flags. Display warnings based on risk_flags without claiming compliance status.
Banks & PSPs
Retention of evidence packs for internal documentation. Store evidence_pack_id + content_hash for audit trails.
Issuers
Embed transparency outputs in partner UX. Reference sources provenance without making compliance claims.
Compliance Teams
Automated monitoring with replayable snapshots. Use as_of timestamps for point-in-time verification.
Versioning & Deprecation Policy
| Change Type | Policy |
|---|---|
| Major version bump | Breaking changes (field removal, type change) |
| Minor version bump | Additive changes (new fields, new enum values) |
| Additive fields | Do not break existing clients |
| Deprecated fields | Announced via changelog; kept for transition period |
Monitor schema_version for breaking changes. Clients should ignore unknown fields for forward compatibility.
Test It
# List all stablecoins (Gold) curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin # Single asset enterprise status (Diamond) curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin/RLUSD # Verify specific assets curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin/USDC curl -H "X-API-Key: YOUR_KEY" \ https://api.feedoracle.io/api/v1/feeds/stablecoin/USDT
Support & Contact
| Resource | Location |
|---|---|
| General inquiries | /contact |
| Technical support | /support |
| API status | /status |
Scope & Disclaimer
FeedOracle provides data infrastructure only. The mica_status field is a heuristic classification
based on publicly available information and internal research — it is not a legal determination,
regulatory certification, or compliance attestation. Users are responsible for their own legal and compliance assessments.
The issuer_reported field reflects attributed data from external sources and does not constitute
verification of legal entity identity.
Schema Version: stablecoin-status/1.0 · Updated January 2026