How can we help you?

Create an authenticated FeraAuth session

Product: FeraAuth Topic: API Versions: Applies to all documented versions Current

Audience: Application developers
Editorial status: Published — Source Validated
Product: FeraAuth
Classification: public

POST /api/v1/auth

Overview

Implements controller.login in routes/api/v1/auth/routes.js:77. This public identity boundary applies the documented field validation, safe credential responses, source-IP checks, rate limits, and delivery behavior without requiring an existing session.

Deprecated compatibility paths

  • POST /api/auth

Use the versioned canonical path for new integrations.

Authentication and access

Security scheme: apiKey

Control Contract
Authentication public
Authorization No prior grant is required; the handler applies credential, token, challenge, rate-limit, or safe-disclosure checks.
Licensing FeraAuth does not evaluate product licenses; consuming products establish access by provisioning FeraAuth instance assignments and permissions.
Instance Context The authenticated token, instance header/body value, or route value selects the application instance used for session and permission evaluation.
Ownership Instance-scoped grants control access; a caller cannot cross into an unrelated instance merely by supplying another resource identifier.

Parameters

No operation parameters.

Request body

JSON identity command consumed by the source-traced handler.

application/json

Schema: LoginRequest

{
    "email": "developer@example.com",
    "password": "correct-horse-battery-staple"
}

Example request

cURL

curl --request POST \ \
  --url 'https://auth.feradel.com/api/v1/auth' \
  --header 'x-api-key: $FERA_SERVICE_API_KEY' \
  --header 'instance: 715c9ebb-0470-11f1-a928-0ed2cd1b87df' \
  --header 'content-type: application/json' \
  --data '{"email":"developer@example.com","password":"correct-horse-battery-staple"}'

Responses

200 Credentials, source IP, target instance, and CAN.LOGIN permission were accepted and a session JWT was issued.

Content type: application/json; schema: AuthToken

{
    "token": "eyJhbGciOiJIUzI1NiJ9.auth-session-token"
}

400 Credentials, whitelist, instance, or login permission are invalid without disclosing which identity fact exists.

Content type: application/json; schema: AuthError

{
    "success": false,
    "error": {
        "status": 400,
        "message": "Invalid credentials"
    }
}

500 The identity or session store could not complete authentication.

Content type: application/json; schema: AuthError

{
    "success": false,
    "error": {
        "status": 500,
        "message": "Unable to complete request"
    }
}

Status and retry matrix

Status Condition Retryable Developer action
200 Credentials, source IP, target instance, and CAN.LOGIN permission were accepted and a session JWT was issued. No Continue with the returned identity representation.
400 Credentials, whitelist, instance, or login permission are invalid without disclosing which identity fact exists. No Correct the documented credential, permission, state, or dependency condition before retrying.
500 The identity or session store could not complete authentication. Yes Correct the documented credential, permission, state, or dependency condition before retrying.

Related operations and events

  • Operation auth_post_authChallengePre
  • Operation auth_post_authChallengeSend
  • Operation auth_post_authChallengeVerify
  • Operation auth_get_authVerifySession
  • Operation auth_post_authCaldavVerify
  • Operation auth_post_authVerifyToken
  • Operation auth_post_authLocal
  • Operation auth_post_authReset

Source trace

Repository: feradelinc/feradel.auth.api
Branch: agent/auth-security-hardening
Commit: 8e09b7213fdbc5e0e1552d5271dbeee768e9dd88
Route: routes/api/v1/auth/routes.js
Handler: controller.login
Contract: OpenAPI 3.1, source-traced and publication-validated.