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": {
    "codename": {
      "description": "Protocol generation spoken by this instance",
      "type": "string"
    },
    "api_code_version": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Version of the API server code"
    },
    "endpoints": {
      "$ref": "#/components/schemas/InstanceEndpointsSchema"
    },
    "captcha": {
      "$ref": "#/components/schemas/InstanceCaptchaSchema"
    },
    "features": {
      "$ref": "#/components/schemas/InstanceFeaturesSchema"
    },
    "gif": {
      "$ref": "#/components/schemas/InstanceGifSchema"
    },
    "sso": {
      "$ref": "#/components/schemas/InstanceSsoSchema"
    },
    "registration": {
      "$ref": "#/components/schemas/InstanceRegistrationSchema"
    },
    "community": {
      "$ref": "#/components/schemas/InstanceCommunitySchema"
    },
    "services": {
      "$ref": "#/components/schemas/InstanceServicesSchema"
    },
    "limits": {
      "type": "object",
      "properties": {
        "version": {
          "type": "number",
          "const": 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": {
                "description": "Filters that determine when this rule applies",
                "type": "object",
                "properties": {
                  "traits": {
                    "description": "Trait filters for this limit rule",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "guildFeatures": {
                    "description": "Guild feature filters for this limit rule",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "overrides": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "number"
                },
                "description": "Map of limit keys to their override values (differences from defaults)"
              }
            },
            "required": [
              "id",
              "overrides"
            ],
            "additionalProperties": false
          },
          "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"
      ],
      "additionalProperties": false,
      "description": "Limit configuration with rules and trait definitions"
    },
    "push": {
      "$ref": "#/components/schemas/InstancePushSchema"
    },
    "app_public": {
      "properties": {
        "branding": {
          "$ref": "#/components/schemas/InstanceBrandingSchema"
        },
        "setup": {
          "$ref": "#/components/schemas/InstanceSetupSchema"
        },
        "legal": {
          "type": "object",
          "properties": {
            "terms_url": {
              "description": "Optional public terms of service URL for account registration",
              "type": [
                "string",
                "null"
              ]
            },
            "privacy_url": {
              "description": "Optional public privacy policy URL for account registration",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "terms_url",
            "privacy_url"
          ],
          "additionalProperties": false,
          "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"
          ],
          "additionalProperties": false,
          "description": "Public registration field collection policy"
        }
      },
      "description": "Public application configuration for client-side features",
      "$ref": "#/components/schemas/InstanceAppPublicSchema"
    },
    "age_policy": {
      "$ref": "#/components/schemas/InstanceAgePolicySchema"
    },
    "domain_migration": {
      "description": "Web domain migration switch and anonymous rollout, only acted on by official instance clients",
      "$ref": "#/components/schemas/DomainMigrationDiscoveryResponse"
    }
  },
  "required": [
    "api_code_version",
    "endpoints",
    "captcha",
    "features",
    "gif",
    "sso",
    "registration",
    "community",
    "services",
    "limits",
    "push",
    "app_public"
  ],
  "additionalProperties": false
}
400

Bad Request - The request was malformed or contained invalid data

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
429

Too Many Requests - You are being rate limited

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    },
    "retry_after": {
      "type": "number",
      "description": "Seconds to wait before retrying"
    },
    "global": {
      "type": "boolean",
      "description": "Whether this is a global rate limit"
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}
500

Internal Server Error - An unexpected error occurred

json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Machine-readable error code"
    },
    "message": {
      "type": "string",
      "description": "Human-readable error message"
    },
    "errors": {
      "description": "Field-specific validation errors",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Field path that failed validation"
          },
          "code": {
            "description": "Machine-readable validation error code",
            "type": "string"
          },
          "message": {
            "type": "string",
            "description": "Human-readable validation error message"
          }
        },
        "required": [
          "path",
          "message"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "code",
    "message"
  ],
  "additionalProperties": {}
}