MaiCoin · Authentication Profile
Maicoin Authentication
Authentication
MaiCoin declares 3 security scheme(s) across its OpenAPI definitions.
CompanyCryptocurrencyDigital AssetsExchangeTradingFinancial-ServicesMarket DataBlockchainTaiwanWebSocket
Methods:
Schemes: 3
OAuth flows:
API key in:
Security Schemes
apiKey
· in: header ()
apiKey
· in: message ()
none
Source
Authentication Profile
generated: '2026-08-25'
method: searched
source: https://max-api.maicoin.com/api/doc/external/v3 (info.description, "身分驗證" section) + https://maicoin.github.io/max-websocket-docs/authentication.md
docs: https://campaign.maicoin.com/en/api-document
note: >-
DERIVATION FAILED, SEARCH SUCCEEDED. The published contract is Swagger 2.0 and declares NO
securityDefinitions block at all, so derive-authentication.py produced zero profiles. The three
auth headers are instead declared as ordinary per-operation header PARAMETERS on all 42 private
operations (X-MAX-ACCESSKEY / X-MAX-PAYLOAD / X-MAX-SIGNATURE), which no scorer or code generator
will read as a security scheme. The model below is transcribed from MaiCoin's own prose docs.
This is a concrete, cheap fix for MaiCoin: declaring one apiKey securityDefinition and a global
`security` block would make the same auth machine-readable without changing a single endpoint.
schemes:
- id: max-hmac
type: apiKey
in: header
applies_to: MAX Exchange REST API v3 (42 of 54 operations)
headers:
- name: X-MAX-ACCESSKEY
description: The account's Access Key, issued from the API token management page.
- name: X-MAX-PAYLOAD
description: Base64 encoding of the JSON request parameters merged with a `path` field.
- name: X-MAX-SIGNATURE
description: Hex HMAC-SHA256 of the payload string, keyed by the account's Secret Key.
- name: X-Sub-Account
required: false
description: Selects a sub-account to operate on. Defaults to the main account, "main".
algorithm: HMAC-SHA256
signing:
steps:
- Build a parameter object containing `nonce` (Unix epoch milliseconds) plus the request parameters.
- Merge the request `path` into that object as a `path` field.
- JSON-serialise the merged object.
- Base64-encode the JSON string. This is X-MAX-PAYLOAD.
- HMAC-SHA256 the payload string using the Secret Key; hex-encode the digest. This is X-MAX-SIGNATURE.
parameter_transport: GET appends parameters to the query string; POST/PUT/DELETE send them in the JSON body. The signed payload must match either way.
replay_protection:
mechanism: nonce
unit: milliseconds since Unix epoch
max_clock_skew_seconds: 30
single_use: true
note: 'Each nonce may be used only once and must be within 30 seconds of server time. The WebSocket surface returns error 1006 for skew and 1012 for reuse.'
- id: max-websocket-auth
type: apiKey
in: message
applies_to: MAX Exchange WebSocket API (private channels)
action: auth
fields:
- apiKey
- nonce
- signature
- id
- filters
algorithm: HMAC-SHA256
signing:
note: >-
DIFFERENT FROM REST. The WebSocket signature is the hex HMAC-SHA256 of the NONCE STRING ALONE,
keyed by the API secret — not of a base64 payload. A client that reuses the REST signing routine
here will fail with error 1007 (authentication failed). This divergence is undocumented as a
divergence; it is only visible by reading both pages.
success_event: authenticated
filters:
default: [order, trade, account]
available: [order, trade, account, trade_update, fast_trade_update, mwallet_order, mwallet_trade, mwallet_fast_trade_update, mwallet_account, ad_ratio, borrowing]
- id: none
type: none
applies_to: MAX Exchange REST API v3 public endpoints (12 of 54 operations) and all public WebSocket channels
note: 'Public market data — markets, currencies, timestamp, k, depth, trades, tickers, ticker, and the four m-wallet public index/limit/interest endpoints — needs no credentials. Verified live: GET /api/v3/markets returned 200 unauthenticated on 2026-08-25.'
credential_issuance:
url: https://max.maicoin.com/api_tokens
prerequisites:
- A registered MAX account (https://max.maicoin.com/signup)
- Completed identity verification
permissions_model: >-
Tokens carry per-scope read permissions selected at creation time. The WebSocket docs name
"read permission for Order / Trade" and "read permission for Account & Personal Information"
as separate grants. MaiCoin publishes no enumerated machine-readable permission list, so
scopes/ is intentionally absent — this is key auth, not OAuth.
oauth2: false
openid_connect: false
mutual_tls: false
security_guidance:
published:
- Do not share API keys.
- Rotate API keys periodically.
- Configure an IP allow-list for additional security.
source: MAX V3 API reference, "安全指南" section
Work with this as data
Every security artifact here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/maicoin-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.