Malt · Authentication Profile

Malt Authentication

Authentication

Malt secures its APIs with apiKey and http across 2 declared security schemes, as derived from its OpenAPI definitions.

CompanyMarketplaceFreelance MarketplaceFreelance Management SystemTalent MarketplaceWorkforce ManagementContingent WorkforceInvoicingPaymentsSCIMIdentity ProvisioningProcurementFuture Of WorkFranceEurope
Methods: apiKey, http Schemes: 2 OAuth flows: API key in: header

Security Schemes

BearerAuth http
scheme: bearer
ApiKeyAuth apiKey
· in: header (Authorization)

Source

Authentication Profile

Raw ↑
generated: '2026-08-17'
method: searched
source: openapi/malt-exposed-apis-openapi.yml
docs: https://api.malt.com/
note: >-
  Baseline derived mechanically from the OpenAPI securitySchemes, then upgraded from Malt's own
  published authentication guidance (the long info.description on the unified spec, which is the
  entirety of Malt's API documentation). Two findings a client must know before writing code.
  (1) The documented header form is a BARE token — `Authorization: your-api-token-here` — with no
  `Bearer ` prefix, even though the spec also declares an http/bearer scheme with bearerFormat JWT.
  The prose and the spec disagree; the prose plus the worked cURL and JavaScript examples all show
  the bare form, so that is what to send. (2) The declared BearerAuth scheme is applied to NO
  operation, the document's global `security` is an EMPTY ARRAY, and the seven /freelancer/*
  operations declare no security requirement at all — yet a live unauthenticated call to
  /freelancer/invoices returns 401. The contract understates its own auth requirement; only the six
  SCIM operations reference ApiKeyAuth.
summary:
  types:
  - apiKey
  - http
  api_key_in:
  - header
  oauth2_flows: []
  oauth2: false
  oidc: false
  mutual_tls: false
  header: Authorization
  prefix: none (bare token, per Malt's documented examples)
  token_lifetime: long-lived (no expiry documented, no refresh mechanism)
  rotation: manual (the docs advise rotating tokens regularly; no API for it)
schemes:
- name: BearerAuth
  type: http
  scheme: bearer
  bearerFormat: JWT
  description: API token obtained from your Malt representative
  applied_to_operations: 0
  applied_note: >-
    Declared in components.securitySchemes but referenced by no operation and not present in the
    document's global `security`. Effectively dead in the contract.
  sources:
  - openapi/malt-exposed-apis-openapi.yml
- name: ApiKeyAuth
  type: apiKey
  in: header
  parameter: Authorization
  description: >-
    To obtain an access token, please follow the instructions at https://api.malt.com
  applied_to_operations: 6
  applied_note: The six SCIM operations under /scim/v2/Users.
  sources:
  - openapi/malt-exposed-apis-openapi.yml
token_types:
- name: Freelancer account token
  audience: individual freelancer
  self_serve: true
  obtain: >-
    Create an identity at https://www.malt.com/signup, then generate the token at
    https://www.malt.com/account/tokens (My Account > API Keys), selecting the permission scopes.
  scopes: >-
    The token-creation UI offers "related permission scopes" per Malt's own instructions, but the
    scope names are not published anywhere public and no oauth2 scope map exists in the spec — so
    the scope vocabulary is only visible to a signed-in account holder. No scopes/ artifact is
    emitted for that reason.
  covers:
  - /freelancer/invoices
  - /freelancer/invoices/{id}
  - /freelancer/invoices/{id}/pdf
  - /freelancer/payments
  - /freelancer/fee-invoices
  - /freelancer/fee-invoices/{id}
  - /freelancer/fee-invoices/{id}/pdf
- name: Client team token
  audience: a buying team inside a client company
  self_serve: false
  obtain: Contact your Malt representative.
- name: Organization token
  audience: an enterprise organization
  self_serve: false
  obtain: Contact your Malt representative.
  covers:
  - /scim/v2/Users
  - /scim/v2/Users/{userId}
authorization_model:
  kind: identity-based
  detail: >-
    Malt's own wording: "APIs are accessible with a given identity based scope at malt." The token's
    identity — freelancer, client team, or organization — determines what is visible, rather than a
    scope string presented per request. A practical consequence: a 403 from this API most often
    means the WRONG TOKEN TYPE was used, not a missing scope.
token_handling:
  displayed_once: true
  displayed_once_note: >-
    Malt's instructions state the token "will only be accessible at the moment you see it" — capture
    it at creation.
  published_guidance:
  - Never expose your token in client-side code
  - Store tokens securely
  - Rotate tokens regularly
  - Monitor token usage in your API dashboard
  guidance_gap: >-
    The guidance refers to monitoring "token usage in your API dashboard", but no such dashboard is
    documented or linked anywhere in the public surface.
discovery:
  oauth_authorization_server: 404 at https://api.malt.com/.well-known/oauth-authorization-server
  oauth_protected_resource: 404 at https://api.malt.com/.well-known/oauth-protected-resource
  openid_configuration: 404 at https://api.malt.com/.well-known/openid-configuration
  finding: >-
    No machine-readable auth discovery of any kind. An agent cannot negotiate credentials; a human
    must obtain a token out of band.
live_behaviour:
- url: https://api.malt.com/freelancer/invoices?since=2026-01-01
  no_credentials: true
  http_status: 401
  content_length: 0
  fetched: '2026-08-17'
  note: >-
    Confirms the freelancer surface is auth-gated at runtime despite declaring no security in the
    spec. The 401 carries no body, so not even the documented error envelope appears.
- url: https://api.malt.com/scim/v2/Users
  no_credentials: true
  http_status: 401
  content_length: 0
  fetched: '2026-08-17'

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/malt-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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