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

Raw ↑
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.
All 92 tools →

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.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.