Florality
FeaturesPricingSecurityFAQAbout
Sign upSign in
Public REST APIv1

REST reference & guides

Public REST APIv1

REST reference & guides

Get started

  • Overview
  • Authentication
  • Scopes
  • Errors

API reference

  • Members
  • Groups
  • Entries
  • Front
  • Appearance
  • Custom fields
  • Trash
  • Search
  • Member statuses
  • Systems
  • Messaging
  • Privacy buckets
  • Terminology
  • Friends
  • Subscriptions
  • Billing
  • Import
  • Social
  • Guestbook & poll
  • Group layout
  • Activity
  1. Documentation
  2. Errors
API keys
Florality

Organise your system. One front at a time.

Get startedSign in

Product

  • Features
  • Pricing
  • Public REST API
  • Security

Company

  • About
  • Our team
  • Changelog
  • Contact

Resources

  • FAQ
  • Trust & Safety
  • Privacy Policy
  • Terms of Service
  • Refunds and cancellation

© 2026 Florality. All rights reserved.

Privacy·Terms·

Errors

JSON endpoints

Routes that return JSON (for example GET /api/v1/members or GET /api/v1/members/{id}) use a consistent error object:

JSON
{
  "code": "UNAUTHORIZED" | "FORBIDDEN" | "BAD_REQUEST" | "NOT_FOUND" | "CONFLICT" | "PRECONDITION_FAILED",
  "message": "Human-readable explanation"
}

Example bodies by code

Same envelope for every code below: code (machine) + message (human). Success responses on each route are documented under Members, Groups & folders, and Entries.

401: UNAUTHORIZED

JSON
{
  "code": "UNAUTHORIZED",
  "message": "Missing or invalid API key. Use Authorization: Bearer <token>."
}

403: FORBIDDEN (insufficient scope; message varies)

JSON
{
  "code": "FORBIDDEN",
  "message": "Missing API key scope: members requires read_write"
}

400: BAD_REQUEST

JSON
{
  "code": "BAD_REQUEST",
  "message": "Invalid request body."
}

404: NOT_FOUND

JSON
{
  "code": "NOT_FOUND",
  "message": "Member not found."
}

409: CONFLICT

JSON
{
  "code": "CONFLICT",
  "message": "Version conflict: member was modified by another client."
}

503: PRECONDITION_FAILED

JSON
{
  "code": "PRECONDITION_FAILED",
  "message": "Object storage is not configured. …"
}

Codes

codeHTTPWhen
UNAUTHORIZED401Missing or invalid Authorization: Bearer token
FORBIDDEN403Valid key but insufficient scope for the route
BAD_REQUEST400Malformed query or path (where validated)
NOT_FOUND404Resource missing or not visible (for example GET /api/v1/members/{id} when the member does not exist, is trashed, or belongs to another account)
CONFLICT409Optimistic concurrency (for example PATCH /api/v1/members/{id} with a stale expectedVersion)
PRECONDITION_FAILED503Required infrastructure missing (for example object storage not configured for markdown image rehost on member about updates)

Member media endpoint

GET /api/v1/members/{memberId}/media returns bytes, a 302 redirect, or failures without a JSON body in several cases.

  • 200: image body; Content-Type and optional ETag from storage
  • 302: redirect to a legacy public https URL when the stored value is an embeddable HTTP(S) URL
  • 400: JSON BAD_REQUEST (invalid kind or member id)
  • 401 / 403: same JSON shape as other v1 routes
  • 404: empty body (unknown member, deleted member, missing asset, or non-embeddable URL)
  • 503: empty body when object storage (MinIO) is not configured