POST Token API v1.2
Complete API documentation for integrating with POST Token. Includes Transaction-Linked Conversion, Vesting API, and comprehensive error codes.
Overview
Base configuration and request format
Base URLs
| Production | https://api.post.network |
| Staging | https://api.staging.post.network |
| Development | http://localhost:8787 |
Request Headers
Response Format
Success Response
Error Response
Authentication
Turnstile and Operator token authentication
Turnstile (Public)
For public endpoints like contact forms. Include the Turnstile token in the request body.
Operator Token
For operator endpoints (vesting, transactions). Include in headers.
Token Generation
Rate Limiting
API and vesting rate limits
API Rate Limits
| Endpoint | Limit | Window |
|---|---|---|
GET /* | 1000 | 1 hour |
POST /api/gateway/swap | 100 | 1 hour |
POST /api/vesting/sell | 10 | 1 hour |
POST /api/contact/* | 5 | 1 hour |
Vesting Rate Limits
| Limit Type | Per Country | Network |
|---|---|---|
| Daily | 10,000 POST | 5,000,000 POST |
| Weekly | 50,000 POST | 25,000,000 POST |
| Monthly | 200,000 POST | 100,000,000 POST |
| Annual | 2,500,000 POST | 500,000,000 POST |
Gateway API v1.2
POST ↔ PSDR token conversion
/api/gateway/rate
Get Exchange Rate
Get the current POST/PSDR exchange rate and SDR pricing.
No parameters required for this endpoint.
/api/gateway/swap
Swap POST to PSDR
Convert POST tokens to PSDR. Requires a valid transaction_id from the Transaction API.
Auth:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
postAmount | number | Required | Amount of POST to swap |
transactionId | string | Required | Transaction ID from /api/transactions/create (e.g., TRF-2026-01-14-ABC123) |
transactionType | string | Required | Type of transaction |
minPsdrReceive | number | Optional | Minimum PSDR to receive (slippage protection) |
/api/gateway/swap-out
Swap PSDR to POST
Convert PSDR back to POST. No transaction_id required (unrestricted cash-out flow).
Auth:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
psdrAmount | number | Required | Amount of PSDR to swap |
minPostReceive | number | Optional | Minimum POST to receive |
Vesting API
Country airdrop allocations and controlled release
/api/vesting/country/{countryCode}
Get Country Allocation
Query vesting status for a specific country including allocation details and rate limits.
Auth:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
countryCode | string | Required | ISO 3166-1 alpha-2 country code (e.g., TV) |
/api/vesting/sell
Execute Airdrop Sale
Sell POST from country airdrop allocation. Subject to rate limits.
Auth:
Rate Limit:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
countryCode | string | Required | Country code |
amount | number | Required | Amount of POST to sell |
Transaction API
Create and manage transactions for Transaction-Linked Conversion
Transaction Lifecycle
/api/transactions/create
Create Transaction
Create a new transaction. Required before POST → PSDR conversion.
Auth:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
transactionType | string | Required | Type: MoneyTransfer, PostalShipment, MerchantPayment, etc. |
amount | number | Required | Transaction amount |
currency | string | Required | Currency code (USD, EUR, etc.) |
/api/transactions/{transactionId}
Get Transaction
Query transaction status and details.
Auth:
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
transactionId | string | Required | Transaction ID |
Error Codes
Complete error code reference
| Code | Status | Message | Resolution |
|---|---|---|---|
E001 | 400 | Invalid transaction ID | Provide valid transaction_id |
E002 | 400 | Transaction not pending | Transaction must be PENDING_FUNDING |
E003 | 400 | Transaction type mismatch | Type must match request |
E006 | 400 | Slippage exceeded | Minimum receive not met |
E007 | 400 | Transaction expired | Create new transaction |
E008 | 400 | Insufficient balance | Add more POST tokens |
E009 | 500 | Pool imbalance | Try again later |