get/.well-known/fluxer

Get instance discovery document

Returns the instance discovery document including API endpoints, feature flags, and limits. This is the canonical discovery endpoint for all Fluxer clients.

get_well_known_fluxer

Responses

200

Success

json
{
  "type": "object",
  "properties": {
    "api_code_version": {
      "type": "integer",
      "format": "int53",
      "description": "Version of the API server code"
    },
    "endpoints": {
      "type": "object",
      "properties": {
        "api": {
          "type": "string",
          "description": "Base URL for authenticated API requests"
        },
        "api_client": {
          "type": "string",
          "description": "Base URL for client API requests"
        },
        "api_public": {
          "type": "string",
          "description": "Base URL for public API requests"
        },
        "gateway": {
          "type": "string",
          "description": "WebSocket URL for the gateway"
        },
        "media": {
          "type": "string",
          "description": "Base URL for the media proxy"
        },
        "static_cdn": {
          "type": "string",
          "description": "Base URL for static assets (avatars, emojis, etc.)"
        },
        "marketing": {
          "type": "string",
          "description": "Base URL for the marketing website"
        },
        "admin": {
          "type": "string",
          "description": "Base URL for the admin panel"
        },
        "invite": {
          "type": "string",
          "description": "Base URL for invite links"
        },
        "gift": {
          "type": "string",
          "description": "Base URL for gift links"
        },
        "webapp": {
          "type": "string",
          "description": "Base URL for the web application"
        }
      },
      "required": [
        "api",
        "api_client",
        "api_public",
        "gateway",
        "media",
        "static_cdn",
        "marketing",
        "admin",
        "invite",
        "gift",
        "webapp"
      ],
      "description": "Endpoint URLs for various services"
    },
    "captcha": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Captcha provider name (hcaptcha, turnstile, none)"
        },
        "hcaptcha_site_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "hCaptcha site key if using hCaptcha"
        },
        "turnstile_site_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Cloudflare Turnstile site key if using Turnstile"
        }
      },
      "required": [
        "provider",
        "hcaptcha_site_key",
        "turnstile_site_key"
      ],
      "description": "Captcha configuration"
    },
    "features": {
      "type": "object",
      "properties": {
        "voice_enabled": {
          "type": "boolean",
          "description": "Whether voice/video calling is enabled"
        },
        "stripe_enabled": {
          "type": "boolean",
          "description": "Whether Stripe payments are enabled"
        },
        "self_hosted": {
          "type": "boolean",
          "description": "Whether this is a self-hosted instance"
        },
        "presigned_attachment_uploads": {
          "type": "boolean",
          "description": "Whether clients can request presigned attachment upload URLs"
        },
        "emails_enabled": {
          "type": "boolean",
          "description": "Whether the instance sends emails (verification, password reset, etc.)"
        }
      },
      "required": [
        "voice_enabled",
        "stripe_enabled",
        "self_hosted",
        "presigned_attachment_uploads",
        "emails_enabled"
      ],
      "description": "Feature flags for this instance"
    },
    "gif": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Stable machine name of the active GIF provider."
        },
        "display_name": {
          "type": "string",
          "description": "Human-readable provider name shown in the UI"
        },
        "attribution_required": {
          "type": "boolean",
          "description": "Whether the client must show a \"Powered by …\" watermark for this provider"
        }
      },
      "required": [
        "provider",
        "display_name",
        "attribution_required"
      ],
      "description": "GIF provider configuration for clients"
    },
    "sso": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether SSO is enabled for this instance"
        },
        "enforced": {
          "type": "boolean",
          "description": "Whether SSO is required for all users"
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Display name of the SSO provider"
        },
        "redirect_uri": {
          "type": "string",
          "description": "OAuth redirect URI for SSO"
        }
      },
      "required": [
        "enabled",
        "enforced",
        "display_name",
        "redirect_uri"
      ],
      "description": "Single sign-on configuration"
    },
    "registration": {
      "type": "object",
      "properties": {
        "mode": {
          "enum": [
            "open",
            "approval",
            "closed"
          ],
          "type": "string",
          "x-enumNames": [
            "open",
            "approval",
            "closed"
          ],
          "description": "Public registration mode for this instance"
        },
        "admin_registration_urls_enabled": {
          "type": "boolean",
          "description": "Whether admin-issued registration URLs are accepted"
        }
      },
      "required": [
        "mode",
        "admin_registration_urls_enabled"
      ],
      "description": "Registration policy for this instance"
    },
    "community": {
      "type": "object",
      "properties": {
        "single_community": {
          "type": "boolean",
          "description": "Whether this instance runs as a single community that every user automatically joins"
        },
        "single_community_guild_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "The stock community guild ID when single-community mode is enabled"
        },
        "direct_messages_disabled": {
          "type": "boolean",
          "description": "Whether direct messages and friend requests are disabled instance-wide"
        }
      },
      "required": [
        "single_community",
        "single_community_guild_id",
        "direct_messages_disabled"
      ],
      "description": "Community topology and direct-message policy for this instance"
    },
    "services": {
      "type": "object",
      "properties": {
        "gif_enabled": {
          "type": "boolean",
          "description": "Whether the GIF picker is enabled for this instance"
        },
        "youtube_enabled": {
          "type": "boolean",
          "description": "Whether YouTube link enrichment is enabled for this instance"
        },
        "bluesky_enabled": {
          "type": "boolean",
          "description": "Whether Bluesky profile connections are enabled for this instance"
        }
      },
      "required": [
        "gif_enabled",
        "youtube_enabled",
        "bluesky_enabled"
      ],
      "description": "Optional third-party service integrations enabled for this instance"
    },
    "limits": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            2
          ],
          "description": "Wire format version"
        },
        "traitDefinitions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Available trait definitions (e.g., \"premium\")"
        },
        "rules": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier for this limit rule"
              },
              "filters": {
                "type": "object",
                "properties": {
                  "traits": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Trait filters for this limit rule"
                  },
                  "guildFeatures": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Guild feature filters for this limit rule"
                  }
                },
                "description": "Filters that determine when this rule applies"
              },
              "overrides": {
                "type": "object",
                "additionalProperties": {
                  "type": "number"
                },
                "description": "Map of limit keys to their override values (differences from defaults)"
              }
            },
            "required": [
              "id",
              "overrides"
            ]
          },
          "description": "Array of limit rules to evaluate"
        },
        "defaultsHash": {
          "type": "string",
          "description": "Hash of the default limit values for cache invalidation"
        }
      },
      "required": [
        "version",
        "traitDefinitions",
        "rules",
        "defaultsHash"
      ],
      "description": "Limit configuration with rules and trait definitions"
    },
    "push": {
      "type": "object",
      "properties": {
        "public_vapid_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "VAPID public key for web push notifications"
        }
      },
      "required": [
        "public_vapid_key"
      ],
      "description": "Push notification configuration"
    },
    "app_public": {
      "type": "object",
      "properties": {
        "branding": {
          "type": "object",
          "properties": {
            "product_name": {
              "type": "string",
              "description": "Public product name shown by client applications"
            },
            "icon_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional image URL for the full application icon"
            },
            "symbol_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional image URL for the compact application symbol"
            },
            "logo_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional image URL for the application logo"
            },
            "wordmark_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional image URL for the application wordmark"
            },
            "favicon_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional favicon URL for browser metadata"
            },
            "theme_color": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional browser theme color"
            }
          },
          "required": [
            "product_name",
            "icon_url",
            "symbol_url",
            "logo_url",
            "wordmark_url",
            "favicon_url",
            "theme_color"
          ],
          "description": "Branding values safe to expose to clients"
        },
        "setup": {
          "type": "object",
          "properties": {
            "configured": {
              "type": "boolean",
              "description": "Whether the instance administrator has completed initial setup"
            },
            "admin_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Admin panel URL to continue instance setup"
            }
          },
          "required": [
            "configured",
            "admin_url"
          ],
          "description": "Initial setup state for self-hosted instances"
        },
        "legal": {
          "type": "object",
          "properties": {
            "terms_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional public terms of service URL for account registration"
            },
            "privacy_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Optional public privacy policy URL for account registration"
            }
          },
          "required": [
            "terms_url",
            "privacy_url"
          ],
          "description": "Optional legal document URLs shown during public registration"
        },
        "registration": {
          "type": "object",
          "properties": {
            "collect_date_of_birth": {
              "type": "boolean",
              "description": "Whether public registration collects and validates date of birth"
            }
          },
          "required": [
            "collect_date_of_birth"
          ],
          "description": "Public registration field collection policy"
        }
      },
      "required": [
        "branding",
        "setup",
        "legal",
        "registration"
      ],
      "description": "Public application configuration for client-side features"
    }
  },
  "required": [
    "api_code_version",
    "endpoints",
    "captcha",
    "features",
    "gif",
    "sso",
    "registration",
    "community",
    "services",
    "limits",
    "push",
    "app_public"
  ]
}
400

Bad Request - The request was malformed or contained invalid data

json
{
  "type": "object",
  "properties": {
    "code": {
      "$ref": "#/components/schemas/APIErrorCode"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "type": "array",
      "description": "Field-specific validation errors",
      "items": {
        "$ref": "#/components/schemas/ValidationErrorItem"
      }
    }
  },
  "required": [
    "code",
    "message"
  ]
}
429

Too Many Requests - You are being rate limited

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "enum": [
        "RATE_LIMITED"
      ]
    },
    "message": {
      "type": "string"
    },
    "retry_after": {
      "type": "number",
      "description": "Seconds to wait before retrying"
    },
    "global": {
      "type": "boolean",
      "description": "Whether this is a global rate limit"
    }
  },
  "required": [
    "code",
    "message",
    "retry_after"
  ]
}
500

Internal Server Error - An unexpected error occurred

json
{
  "type": "object",
  "properties": {
    "code": {
      "$ref": "#/components/schemas/APIErrorCode"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "type": "array",
      "description": "Field-specific validation errors",
      "items": {
        "$ref": "#/components/schemas/ValidationErrorItem"
      }
    }
  },
  "required": [
    "code",
    "message"
  ]
}