{% extends "base.html" %} {% block title %}API - RadiusForge{% endblock %} {% block content %} {# Step API 3c (3 Oct 2026): made from apps/api/spec.py - tests compare it with the real API. #}

API

For a billing system or your own scripts. Address: {{ base }}. Keys are made on the Organization page. Download openapi.json for your tools.

Before you start

The examples keep the key in $RFK, so it never sits in your shell history. Type this, paste the key (nothing shows), and press Enter:

read -rs RFK

Endpoints

{% for e in endpoints %}

{{ e.method }} {{ e.path }}{% if e.access == "write" %} read-write key{% endif %}

{{ e.summary }}

{% if e.query %}

Query:

{% endif %} {% if e.body_fields %}

Body (JSON):

{% endif %}

Answer: {{ e.answer }}

{{ e.curl }}
{% endfor %}

When something is refused

Every refusal is JSON: {"error": {"code": "...", "message": "..."}}. The message is meant to be shown to a person; the code is for your program.

{% for code, status, text in errors %} {% endfor %}
CodeHTTPMeaning
{{ code }}{{ status }}{{ text }}
{% endblock %}