Documentation Index
Fetch the complete documentation index at: https://docs.mannco.store/llms.txt
Use this file to discover all available pages before exploring further.
API login (POST /user/login)
Use this to obtain a JWT for all documented routes that require Connected + API.
POST /user/login
Exchanges an API key for a JWT used on subsequent calls.
Request body
The router accepts JSON (Content-Type: application/json) or application/x-www-form-urlencoded. Required field:
API key from your Mannco.store account settings.
JSON example
Form example
Success response
content.jwt (there is no data wrapper).
JWT claims (decoded payload)
| Claim | Type | Description |
|---|---|---|
iss | string | Always "API" |
sub | string | User Steam64 ID |
exp | number | Expiry (Unix), about 31 days after issue |
iat | number | Issued-at (Unix) |
jti | string | Token id |
ip | string | Client IP at login time |
proxy | boolean | Proxy context |
API | boolean | Always true for this flow |
country | string | ISO country code |
steamid | string | Steam ID (backend format) |
roles / rolesHash | Role data |
Errors (loginAPI.php)
| Response type | Typical HTTP | content |
|---|---|---|
error | 300 | Missing required parameter: apiKey |
forbidden | 403 | Invalid API key |
forbidden | 403 | Country blocked |
Examples
cURL
JavaScript
Python
Store the JWT securely. When it expires, call POST /user/login again with your API key.
Using the JWT
For endpoints that require Connected + API, send:IP binding
The JWT is tied to the IP address at login. If your client IP changes (VPN, mobile network, proxy), requests may fail authentication. Use a stable egress IP or the same network as when you obtained the token.Routes without a logged-in user
Some routes only have theapi filter (no connected). Public item endpoints may work without a Bearer token. GET /user/store/ does not require a user JWT. For your account data, always send the Bearer token from POST /user/login.