Skip to main content

Authentication

ReOpenly uses Logto for dashboard sessions and user-scoped API keys for programmatic access. Every API request must identify the account that will be authorized and charged.

Create a project API key

Sign in to the ReOpenly dashboard, open the project, and create an API key from the project settings. The full token is shown only in the create response or create dialog. Store it in a secret manager immediately; ReOpenly stores a digest and cannot display the original value later.

API keys do not carry Logto roles and cannot call operator-only routes such as /api/ops/proxy/*.

Send the key

Use the standard bearer header:

export REOPENLY_API_KEY='replace-with-the-created-key'

curl https://reopenly.com/api/base-models \
-H "Authorization: Bearer ${REOPENLY_API_KEY}"

Do not put the key in a browser bundle, URL, model name, or log line. A failed credential lookup returns the API error contract described in Errors and retries.

Find the deployment catalog

GET /api/base-models is authenticated and returns the model catalog plus the training bounds for that deployment:

{
"base_models": [
{
"model_id": "unsloth/Qwen3.5-9B",
"display_name": "Qwen3.5 9B",
"size_label": "9B",
"hosted_lora": true,
"max_context_tokens": 4096
}
],
"limits": {
"max_seq_length": { "min": 512, "max": 4096, "default": 2048 },
"num_train_epochs": { "min": 1, "max": 20, "default": 3 }
},
"profiles": {
"unsloth/Qwen3.5-9B": {
"id": "qwen35-9b-lora",
"version": 1,
"model_id": "unsloth/Qwen3.5-9B",
"worker_class": "runpod-a5000-24gb",
"limits": { "num_train_epochs": { "min": 1, "max": 20, "default": 3 } }
}
}
}

The exact list and limits are deployment data. Render what the endpoint returns instead of copying this example into application logic.

Project URL template

For OpenAI-compatible calls, combine the project owner and slug with the deployment origin:

export REOPENLY_OPENAI_BASE='https://reopenly.com/api/projects/acme/support/openai/v1'

curl "${REOPENLY_OPENAI_BASE}/models" \
-H "Authorization: Bearer ${REOPENLY_API_KEY}"

The model list is caller-aware: owners see their models, while shared or public hosted aliases appear only when the caller is allowed to use them.