Skip to content

Endpoints

All paths are relative to https://www.remilia.net/api/v1. Responses are JSON. Send Authorization: Bearer <access_token> on any endpoint requiring a scope (see Login Quickstart).

Get a user profile

http
GET /users/{username}

Returns the public profile for {username}.

Scope: none — public.

A token is optional. If sent, it must be valid; an expired or malformed token returns 401 invalid_token.

sh
curl https://www.remilia.net/api/v1/users/remilia

The profile object is returned directly (no data wrapper). An unknown username returns a plain-text 404 user not found, not the JSON error envelope.

Get the authenticated user's profile

http
GET /me/profile

Returns profile data for the token's user: handle, display name, per-platform stats, and aggregate scores.

Scope: remilia:profile.private · user-delegated token required

sh
curl https://www.remilia.net/api/v1/me/profile \
  -H "Authorization: Bearer $ACCESS_TOKEN"

The response is wrapped in a data envelope:

json
{
  "data": {
    "handle": "remilia",
    "display_name": "Remilia",
    "stats": { "...": "per-platform stats objects" },
    "aggregate_scores": { "...": 0 }
  }
}

This data is readable only for the user who granted the scope; there is no {username} variant.

Poke a user

http
POST /pokes

Sends a poke to another user, attributed to the authenticated user.

Scope: remilia:interact.poke · user-delegated token required

sh
curl -X POST https://www.remilia.net/api/v1/pokes \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username": "remilia"}'

Responses

Success:

json
{ "success": true }

Unknown-target and cooldown failures return HTTP 400:

json
{ "success": false, "error": "poke on cooldown (23h59m30s remaining)" }

Poking the same user is limited to once per 24 hours — a per-target cooldown, not a rate limit. Disable the action until it lapses.

Built by Remilia Corporation