← Back to Documentation

Stablecoin Status

Evidence-Grade Regulatory Signals

Machine-readable status metadata + replayable evidence artifacts for enterprise monitoring workflows.

Versioned — Schema-controlled responses
Deterministic — Canonical JSON hashing
Forwardable — Evidence packs for retention
Infrastructure-only • No legal/solvency claims

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}
Coverage105+ stablecoinsSingle asset
MiCA StatusStatus + reason_codeFull mica_basis object
Risk FlagsArray of codesObjects with severity
SourcesSingle refFull provenance chain
Evidence BlockHash + pack_id + anchor
Use CaseDashboardsAudit retention

Endpoints

Gold: Stablecoin List

GET/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

GET/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.

PlanAccess
FreeLimited requests, Gold endpoints only
Developer/ProfessionalGold endpoints, higher rate limits
EnterpriseGold + 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 / FieldStatus
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

ParameterValue
Rate Limit100 requests/minute per API key
Data RefreshBest-effort, typically 5-15 minutes
CachingClients should rely on as_of timestamp
ETag/If-None-MatchNot currently supported
Note: The as_of field is the observation timestamp for this snapshot. Use it for point-in-time verification and cache invalidation logic.

Data Freshness

AspectBehavior
as_ofObservation timestamp when snapshot was generated (UTC)
Refresh cadenceBest-effort; typically every 5-15 minutes
Source outageStale snapshot may be served; check as_of age
Guaranteed SLANot 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

CodeError CodeDescription
400BAD_REQUESTInvalid request format or parameters
401UNAUTHORIZEDMissing or invalid API key
403FORBIDDENAPI key lacks permission for this endpoint
404NOT_FOUNDSymbol not found or endpoint does not exist
429RATE_LIMITEDToo many requests, retry after cooldown
500INTERNAL_ERRORServer error, contact support if persistent

Pagination & Filtering

GET /api/v1/feeds/stablecoin

FeatureStatus
PaginationNot paginated (small set, ~40 items)
FilteringNot currently supported
SortingDefault: descending by mcap_usd
Limit parameterNot 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

FieldTypeDescription
schema_versionstringSchema identifier for versioning
as_ofISO 8601Snapshot timestamp (UTC)
issuer_reportedstringAttributed issuer name (not legal verification)
mcap_usdintegerCirculating supply in USD
reserve_modelenumfiat-backed, crypto-backed, hybrid, treasury-backed, yield-bearing, unknown
FieldTypeDescription
mica_statusenumHeuristic classification (see below)
mica_basis.sourcestringData source for MiCA assessment
mica_basis.observed_atISO 8601When assessment was recorded
mica_basis.reason_codeenumMachine-readable reason
risk_flags[]arrayStructured flags with code, severity, reason_code
sources[]arrayProvenance chain (type, ref, observed_at)
FieldTypeDescription
evidence.content_hashstringSHA256 of canonical JSON (core data)
evidence.evidence_pack_idstringUnique snapshot identifier
evidence.anchor_refobjectOn-chain anchor refs (nullable)
disclaimerstringScope boundary statement

MiCA Status & Reason Codes

Neutral metadata classification. Not a legal determination.

v2.6.0 — 7 status values, ESMA cross-validated

StatusReason CodeMeaningEvidence Class
verifiedEU_AUTHORIZATION_VERIFIEDEU/EEA EMI license confirmed — ESMA register, EU27+IS/LI/NO onlyREGISTER
non_eu_regulatedNON_EU_REGULATEDRegulatory license outside EU/EEA (MAS, CFTC…). Not MiCA-authorized. register_scope: NON_EUREGISTER
nav_instrumentNAV_INSTRUMENT_OUT_OF_SCOPETokenized fund / yield instrument. Peg deviation N/A — use NAV premium/discount. Outside EMT/ART scope.ONCHAIN_INFERENCE
flaggedNO_MATCH_IN_ESMA_REGISTER_AS_OF_DATEExplicit negative ESMA check — no EU authorization foundREGISTER_NEGATIVE
pendingPENDING_CONFIRMATIONEU license application reported; not yet in ESMA registerISSUER_DISCLOSURE
not_applicableDECENTRALIZED_PROTOCOLNo central issuer — DeFi/algorithmic, exempt from EMT/ARTATTESTATION
unknownINSUFFICIENT_PUBLIC_EVIDENCEInsufficient public data for classificationMARKET_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.

How to use: Treat as screening/monitoring metadata, not a compliance verdict. Your legal/compliance team must perform their own assessment based on current regulations.

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

RuleSpecification
EncodingUTF-8
Key OrderSorted alphabetically
WhitespaceNo insignificant whitespace
Separators, and : only
NumbersInteger (no trailing decimals)

Hash Verification Steps

  1. Extract the six core fields from the API response
  2. Serialize to canonical JSON (sorted keys, compact)
  3. Encode the JSON string as UTF-8 bytes
  4. Compute SHA256 digest of the bytes
  5. Compare sha256: + hex with evidence.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 TypePolicy
Major version bumpBreaking changes (field removal, type change)
Minor version bumpAdditive changes (new fields, new enum values)
Additive fieldsDo not break existing clients
Deprecated fieldsAnnounced 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

ResourceLocation
General inquiries/contact
Technical support/support
API status/status
Privacy Note: FeedOracle APIs do not collect or process PII. Infrastructure-only data delivery.

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