v0 previewGrades are draft or provisional: produced under Methodology v0.2.1 from public evidence, pending re-verification and issuer right-of-reply. Nothing here is investment advice, and these are not credit ratings.

Public API — v0

Read-only JSON over HTTPS. No auth, no key, no SDK required. Data is regenerated at each build by the open-source Python engine — grades are never computed here, only served. Base URL: https://www.arunights.com

v0 preview. Grades are draft/provisional under Methodology v0.2.1 until individually published. Endpoint paths are stable; response fields only ever get added, never removed or retyped, within v0.

Response envelope

Every response — success or error — carries a meta block: as_of (evidence date), methodology_version, generated (engine run date), disclaimer and license. Errors always have this shape, with an appropriate HTTP status:

json
{"error": {"code": "NOT_FOUND", "message": "no coverage for asset id 'frxusd' — GET /api/v0/assets lists covered ids"}, "meta": {...}}

Endpoints

GET /api/v0/assets

All graded assets, brief form: id, grade, score, confidence, status, haircut, flags, summary.

  • ?class= — optional filter: yield_dollar, vault, curator, rwa_wrapper
bash
curl "https://www.arunights.com/api/v0/assets?class=rwa_wrapper"
GET /api/v0/assets/{id}

Full rating detail for one asset: pillar scores with notes and evidence links, falsifier, haircut derivation.

bash
curl "https://www.arunights.com/api/v0/assets/usde"
POST /api/v0/assess

Risk-adjust a book of positions using published grades and haircuts — the same arithmetic as the monitor page. Returns adjusted values, haircut drag, exposure-weighted score, policy checks, warnings.

  • body — {positions: [{id, amount_usd}]}, JSON, 1–200 positions, max 100 KB
  • id — must be a covered asset id (unknown ids are a 400; see GET /api/v0/assets)
  • amount_usd — finite number, 0 to 1e13; unknown fields are rejected
  • curator ids are entities, not holdable instruments — those positions come back in `rejected` and are excluded from totals
bash
curl -X POST "https://www.arunights.com/api/v0/assess" \
  -H "content-type: application/json" \
  -d '{"positions":[{"id":"usdc","amount_usd":40000000},{"id":"usde","amount_usd":10000000},{"id":"susde","amount_usd":5000000}]}'
GET /api/v0/methodology

The published methodology, verbatim markdown, plus its version.

bash
curl "https://www.arunights.com/api/v0/methodology"

The raw engine artifact is also served unmodified at https://www.arunights.com/ratings.json — same bytes the API reads.

Rate limit

60 requests per minute per IP across all v0 endpoints. Exceeding it returns 429 with a Retry-After header (seconds). Need more for an integration? dhruv.arunights@gmail.com.

Errors

API error statuses and codes
StatusCodeWhen
400INVALID_CLASS / INVALID_JSON / VALIDATION_FAILEDbad query param, malformed JSON, or a body that fails validation
404NOT_FOUNDasset id not covered
413BODY_TOO_LARGErequest body over 100 KB
415UNSUPPORTED_MEDIA_TYPEPOST without content-type: application/json
429RATE_LIMITEDover 60 requests/min from one IP — honor the Retry-After header
500INTERNALour fault; no stack traces are ever returned

License & attribution

free with attribution — use the data in research, dashboards, risk systems or agents, commercial or not, as long as you attribute “Arunights Research” with a link to the methodology. Don’t present grades as your own, as credit ratings, or as investment advice. No issuer pays for a grade; grades are never for sale.

Disclaimer

Arunights Risk Grades are independent research opinions on loss resilience — not credit ratings, not investment advice, not margin requirements. Grades are draft/provisional pending verification; haircuts are illustrative. No issuer pays for a grade.