Dunamu · Authentication Profile

Dunamu Authentication

Authentication

Dunamu declares 1 security scheme(s) across its OpenAPI definitions.

FintechCryptocurrencyDigital AssetsExchangeSecuritiesTradingBlockchainSouth KoreaCompany
Methods: Schemes: 1 OAuth flows: API key in:

Security Schemes

http
scheme: bearer

Source

Authentication Profile

dunamu-authentication.yml Raw ↑
generated: '2026-08-12'
method: searched
source: https://global-docs.upbit.com/reference/auth
docs: https://global-docs.upbit.com/docs/api-key
note: >-
  Authentication profile for the developer surface Dunamu Inc. operates under the Upbit brand.
  Dunamu itself serves no authenticated API from dunamu.com. Read from the Upbit Developer Center
  reference and its markdown twins (/reference/auth.md, /reference/rest-api-guide.md,
  /docs/api-key.md) on 2026-08-12. No OpenAPI securityScheme block was available to derive from —
  the Dunamu record carries no OpenAPI (the spec set lives on the Upbit provider profile), so this
  is a docs-sourced profile, not a spec derivation.
x-brand: Upbit
surfaces:
- name: Quotation API
  scope: public market data
  authentication: none
  note: >-
    Public API, accessible without authentication. Read-only (trading pairs, candles, trade
    history, tickers, orderbooks).
- name: Exchange API
  scope: accounts, orders, deposits, withdrawals, travel rule
  authentication: jwt-bearer
  note: Private API. API Key required. Create, Read, Delete (cancel) operations.
schemes:
- id: upbit-jwt
  type: http
  scheme: bearer
  bearerFormat: JWT
  header: Authorization
  header_form: 'Authorization: Bearer <jwt>'
  algorithm: HS256
  signing_key: >-
    The issued secret key, used raw. The documentation states explicitly that "the issued secret
    key is not base64 encoded" and warns developers to check their JWT library settings.
  claims:
  - name: access_key
    required: true
    description: The issued access key.
  - name: nonce
    required: true
    description: >-
      A random UUID string, unique per request. Reuse is rejected with error code `nonce_used`.
  - name: query_hash
    required: conditional
    description: >-
      Hash of the request query string. Required only when the request carries parameters. The
      query string must be a standard URL query string — JSON is not permitted for hashing.
  - name: query_hash_alg
    required: conditional
    description: Algorithm used for query_hash. SHA512.
  deprecated_predecessor: >-
    The legacy `query` claim form was deprecated in March 2022 in favour of
    query_hash + query_hash_alg.
key_management:
  issuance_url: https://global-docs.upbit.com/docs/api-key
  issuance_path: 'Upbit PC web > My Profile > Open API'
  issuance_constraint: >-
    "API Keys can be issued only through the PC web interface and require a security level of 2 or
    higher." Not issuable from mobile.
  permissions:
  - id: view-assets
    description: Read account assets and balances.
    ip_allowlist_required: false
  - id: make-orders
    description: Create and cancel orders.
    ip_allowlist_required: true
  - id: withdraw
    description: Request digital asset withdrawals.
    ip_allowlist_required: true
  ip_allowlist:
    required_for: [make-orders, withdraw]
    rule: >-
      "If you select Make Orders or Withdraw, you must register an allowlisted IP address."
      A static IP is mandatory — the FAQ states dynamic-IP environments are not supported for
      key-authenticated Exchange APIs because they involve deposits, withdrawals and trading.
    error_on_mismatch: no_authorization_ip (HTTP 401)
  expiry:
    documented_period: null
    note: >-
      The docs expose an "Expired Keys" tab for deleting expired keys and an `expired_access_key`
      (HTTP 401) error code, so keys DO expire — but no validity period is stated on the API-key
      page. Recorded as an honest gap, not guessed.
oauth2:
  supported: false
  note: >-
    No OAuth 2.0, no OpenID Connect, no authorization-server metadata. Probed 2026-08-12:
    /.well-known/oauth-authorization-server and /.well-known/openid-configuration return 404 on
    global-docs.upbit.com and dunamu.com. No scopes/ artifact is emitted for this provider —
    permissions are key-level checkboxes set at issuance, not OAuth scopes. The single
    scope-shaped runtime signal is the `out_of_scope` error code (HTTP 403), which reports that a
    key lacks the permission for the requested operation.
transport:
  tls_minimum: TLSv1.2
  tls_recommended: TLSv1.3
  note: >-
    "The Upbit Open API supports only TLS version 1.2 or higher." Versions below TLS 1.2 are
    stated as no longer supported.
websocket:
  authentication: >-
    Private WebSocket streams (wss://<region>-api.upbit.com/websocket/v1/private) use the same JWT
    bearer token as the REST Exchange API. Public streams
    (wss://<region>-api.upbit.com/websocket/v1) require no authentication.
  docs: https://global-docs.upbit.com/reference/websocket-guide
errors:
  reference: errors/dunamu-problem-types.yml
  auth_codes:
  - invalid_query_payload
  - jwt_verification
  - expired_access_key
  - nonce_used
  - no_authorization_ip
  - no_authorization_token
  - out_of_scope