Skip to main content

Login

Authenticate a user and obtain a JWT token for subsequent API requests.

POST/apidev/v1/login
PermissionNone (public)
Rate Limit5 req/30s per account
CacheNone

Overview

Authenticates a user by email and password and returns a signed JWT token valid for 1 hour. This is a public endpoint — no JWT or API Key required, only the tenant header.

For the full dual-auth model (JWT + API Key) and how to use the token on protected endpoints, see Authentication.


Request

Headers

HeaderTypeRequiredDescription
tenantstringYesYour tenant domain (e.g. yourcompany.geotareas.com)
Content-TypestringYesMust be application/json

Body Parameters

ParameterTypeRequiredDescription
emailstringYesUser email address
passwordstringYesUser password

Code Examples

curl -X POST "https://$TENANT/apidev/v1/login" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{
"email": "dev@company.com",
"password": "your_password"
}'

Response

Success — 200 OK

FieldTypeDescription
successbooleanAlways true on success
data.authorizationstringSigned JWT token, valid for 1 hour
metaobjectEmpty object
{
"success": true,
"data": {
"authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
"meta": {}
}

Errors

HTTP CodeError CodeCause
400BAD_REQUESTMissing tenant header
400VALIDATION_ERRORMissing or malformed body (e.g. invalid email format, missing password)
401UNAUTHORIZEDInvalid email or password
429RATE_LIMITED5+ failed attempts in 30s — account blocked for 60 seconds
{
"success": false,
"data": null,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid email or password."
}
}

Next steps

Once you have the token, attach it alongside your API Key and tenant header on every request. See Using the Token for the exact headers required.