Skip to main content

Base URL

All API requests are made to:
https://mannco.store

Authentication

The API uses session-based authentication via Steam OpenID. Most endpoints require the user to be logged in (session cookie). Mutating requests (POST, PUT, PATCH, DELETE) additionally require a valid CSRF token.

Session flow

  1. The user authenticates via Steam OpenID at GET /user/login
  2. A session cookie is set on successful authentication
  3. The session cookie must be sent with every subsequent request
  4. Retrieve a CSRF token via GET /csrf/token before making any write request

CSRF protection

All POST, PUT, PATCH, and DELETE requests are protected by CSRF validation. You must include a valid CSRF token in your requests.
POST requests accept both application/json and application/x-www-form-urlencoded content types. JSON payloads are automatically decoded.

Permission levels

Endpoints require specific permission levels, indicated by tags in the documentation:
PermissionDescription
PublicNo authentication required
ConnectedUser must be logged in
2FAUser must have validated 2FA for the current session
AdminUser must have admin privileges
ModeratorUser must have moderator privileges
RecaptchaRequest must include a valid reCAPTCHA token
Many endpoints have an admin variant that accepts a {userid} path parameter to operate on behalf of another user.

Response format

All API responses return JSON. Successful responses typically have this structure:
{
  "status": "success",
  "data": { ... }
}
Error responses follow this pattern:
{
  "status": "error",
  "message": "Description of the error"
}

Error codes

HTTP CodeDescription
200Success
401Not authenticated — user must log in
403Forbidden — insufficient permissions, invalid CSRF, or reCAPTCHA failure
404Endpoint not found

Specific error pages

ErrorTrigger
401Missing or invalid session (connected filter)
403Insufficient role (admin, moderator, server)
403 CSRFInvalid or missing CSRF token
403 RecaptchaFailed reCAPTCHA validation
2FA Required2FA validation needed for this operation

Rate limiting

Some operations have built-in rate limits:
  • Giveaway creation: 1 per hour per user
  • Giveaway comments: 1 per 10 minutes per user
  • Buy order modifications: Tracked per day per user
  • Email validation codes: 1 per 5 minutes

Prices

All prices in the API are stored as integers in cents. For example, $1.50 is represented as 150.

Common types

SteamID

User identifiers are Steam 64-bit IDs (e.g., 76561198000000000), passed as strings.

Game IDs

GameID
Team Fortress 2440
Counter-Strike 2730
Dota 2570
Rust252490

Item states (backpack)

StateDescription
0In user inventory (not listed)
1Listed for sale
2Pending withdrawal
3In active trade
NegativeReserved for giveaway

Offer statuses

StatusDescription
0Active / Pending
1Accepted
2Declined
3Removed / Cancelled
-1Auto-cancelled: buyer insufficient balance
-2Auto-cancelled: offer expired
-3Auto-cancelled: item no longer available

Trade statuses

StatusDescription
0Pending
3Completed
-1Failed
-11Hidden
-12Reverted (admin)