Developer documentation
Quickstart
Make your first authenticated query and report a complete account lifecycle safely.
Before you begin
- A participating institution in ACTIVE status.
- A test API key copied at creation time; secrets are shown once.
- The credit:read scope for lookups, plus credit:report, accounts:write and events:write for reporting.
- An HTTPS-capable client that validates certificates and safely stores secrets.
1. Make an authenticated request
curl "https://api.redmontcredit.com/api/v1/subjects?q=Gabriel" \
--header "Authorization: Bearer $RCN_API_KEY" \
--header "Accept: application/json" \
--header "X-Request-ID: lookup-2026-08-18-001"A successful response is a JSON array. A 401 means the credential is missing, invalid, revoked or expired. A 403 usually means the institution is inactive, the source IP is not allowed, or the key lacks the required scope.
Client examples
HTTP-first integration
RCN does not currently publish a generated SDK. Use a small, reviewed HTTP wrapper and the live OpenAPI schema to generate internal types if your toolchain supports it.
const baseUrl = "https://api.redmontcredit.com/api/v1";
async function rcn<T>(path: string, init: RequestInit = {}): Promise<T> {
const response = await fetch(baseUrl + path, {
...init,
headers: {
Authorization: `Bearer ${process.env.RCN_API_KEY}`,
Accept: "application/json",
"Content-Type": "application/json",
"X-Request-ID": crypto.randomUUID(),
...init.headers,
},
});
const body = await response.json();
if (!response.ok) {
throw new Error(`RCN ${body.error?.code}: ${body.error?.message} [${body.error?.request_id}]`);
}
return body as T;
}
const subjects = await rcn<Array<{ id: string; display_name: string }>>(
"/subjects?q=ExampleBorrower",
);import os, uuid, httpx
client = httpx.Client(
base_url="https://api.redmontcredit.com/api/v1",
headers={"Authorization": f"Bearer {os.environ['RCN_API_KEY']}"},
timeout=httpx.Timeout(10.0),
)
response = client.get(
"/subjects",
params={"q": "ExampleBorrower", "limit": 20},
headers={"X-Request-ID": str(uuid.uuid4())},
)
response.raise_for_status()
subjects = response.json()2. Create an individual subject
curl "https://api.redmontcredit.com/api/v1/subjects" \
-X POST \
-H "Authorization: Bearer $RCN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "INDIVIDUAL",
"minecraft_uuid": "8667ba71-b85a-4004-af54-457a9734eed7",
"current_username": "ExampleBorrower",
"forum_id": "forum-1042"
}'Search first
Minecraft UUID is the stable identifier; usernames can change. RCN rejects a potential duplicate with 409 so it can be reviewed instead of silently producing split histories.
3. Report an account
curl "https://api.redmontcredit.com/api/v1/accounts" \
-X POST \
-H "Authorization: Bearer $RCN_API_KEY" \
-H "Idempotency-Key: account-loan-481-v1" \
-H "Content-Type: application/json" \
-d '{
"subject_id": "SUBJECT_ID",
"external_account_id": "loan-481",
"account_type": "TERM_LOAN",
"currency": "DCR",
"original_principal": 2500.00,
"current_balance": 2500.00,
"interest_rate_bps": 750,
"interest_type": "FIXED",
"opened_at": "2026-08-18T02:00:00Z",
"payment_frequency": "MONTHLY",
"status": "CURRENT"
}'Account creation automatically records ACCOUNT_OPENED and recalculates the subject profile. external_account_id must be unique within your institution.
4. Report a payment
curl "https://api.redmontcredit.com/api/v1/accounts/ACCOUNT_ID/events" \
-X POST \
-H "Authorization: Bearer $RCN_API_KEY" \
-H "Idempotency-Key: payment-481-2026-09-v1" \
-H "Content-Type: application/json" \
-d '{
"event_type": "PAYMENT_MADE",
"occurred_at": "2026-09-18T02:00:00Z",
"amount": 225.00,
"balance_after": 2275.00,
"source_reference": "ledger-payment-8841"
}'5. Query the profile
curl "https://api.redmontcredit.com/api/v1/credit/SUBJECT_ID?purpose=NEW_CREDIT_APPLICATION&inquiry_type=HARD" \
-H "Authorization: Bearer $RCN_API_KEY" \
-H "X-Request-ID: underwriting-case-773"The response contains subject, credit, risk, history and reason_codes objects. Persist the returned request ID and your decision context; do not treat the score as an approval instruction.