Spendesk Users API

Members of a company (`user:read`).

Operations 2

GET /v1/users Get Users #
GET /v1/users/{id} Get User By Id #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/spendesk:spendesk-users-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

spendesk-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Spendesk Public Users API
  description: Spendesk Public API
  version: '1.0'
  summary: Spendesk Public API
  contact:
    email: support-public-api@spendesk.com
    url: https://developer.spendesk.com/
    name: Spendesk for Developers
  termsOfService: https://www.spendesk.com/en/legals/terms/api-agreement
servers:
- url: https://public-api.spendesk.com
  description: Production
- url: https://public-api.demo.spendesk.com
  description: Sandbox
tags:
- name: Users
  description: Members of a company (`user:read`).
paths:
  /v1/users:
    get:
      operationId: v1-get-users
      summary: Get Users
      tags:
      - Users
      description: '**Allowed Scopes**: _`user:read`_


        Returns members (users) of the Spendesk entity (company). User data is cached for up to 20 minutes. Changes, including those made through the API, can take up to 20 minutes to appear.'
      parameters:
      - schema:
          type: integer
          default: 1
          minimum: 1
        in: query
        name: page
        required: false
        description: Page number
      - schema:
          type: integer
          default: 30
          minimum: 1
          maximum: 30
        in: query
        name: pageSize
        required: false
        description: Page size
      - schema:
          type: array
          items:
            type: string
        in: query
        name: ids
        required: false
        description: User IDs to filter by.
      - schema:
          type: string
          default: active
          enum:
          - active
          - archived
          - pending
        in: query
        name: status
        required: false
        description: The user status to filter for.
      - schema:
          type: string
        in: header
        name: X-Company-Id
        required: false
        description: ID of the company the request acts on. Required with an organisation-level token; not needed with a company-level token.
      security:
      - Authentication:
        - user:read
      x-roles:
      - controller
      - admin
      - accountOwner
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    $ref: '#/components/schemas/meta'
                  data:
                    description: List of users matching the given criteria.
                    type: array
                    items:
                      $ref: '#/components/schemas/user'
                required:
                - meta
                - data
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
        '429':
          description: Too Many Requests
          headers:
            retry-after:
              schema:
                type: integer
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tooManyRequests'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internalServerError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceUnavailableError'
  /v1/users/{id}:
    get:
      operationId: v1-get-user-by-id
      summary: Get User By Id
      tags:
      - Users
      description: '**Allowed Scopes**: _`user:read`_


        Retrieves a member (user) by its ID. User data is cached for up to 20 minutes. Changes, including those made through the API, can take up to 20 minutes to appear.'
      parameters:
      - schema:
          type: string
        in: path
        name: id
        required: true
        description: ID of the user to retrieve.
      - schema:
          type: string
        in: header
        name: X-Company-Id
        required: false
        description: ID of the company the request acts on. Required with an organisation-level token; not needed with a company-level token.
      security:
      - Authentication:
        - user:read
      x-roles:
      - controller
      - admin
      - accountOwner
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/badRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/notFound'
        '429':
          description: Too Many Requests
          headers:
            retry-after:
              schema:
                type: integer
              description: Seconds to wait before retrying the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tooManyRequests'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internalServerError'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serviceUnavailableError'
components:
  schemas:
    pagination:
      type: object
      properties:
        page:
          type: integer
          default: 1
          minimum: 1
          description: Page number
        pageSize:
          type: integer
          default: 30
          minimum: 1
          maximum: 30
          description: Page size
        total:
          type: integer
          minimum: 0
          description: Total amount of records for this collection
      required:
      - page
      - pageSize
      - total
      title: pagination
    unauthorized:
      type: object
      description: Unauthorized
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                - AUTHENTICATION_ERROR
              detail:
                type: string
            required:
            - code
            - detail
      required:
      - errors
      title: unauthorized
    forbidden:
      type: object
      description: Forbidden
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              code:
                type: string
                enum:
                - FORBIDDEN_ERROR
              detail:
                type: string
            required:
            - code
            - detail
      required:
      - errors
      title: forbidden
    notFound:
      type: object
      description: Not Found
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            additionalProperties: false
            type: object
            properties:
              code:
                type: string
                enum:
                - NOT_FOUND
              detail:
                type: string
            required:
            - code
            - detail
      required:
      - errors
      title: notFound
    serviceUnavailableError:
      type: object
      description: Service Unavailable
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              code:
                type: string
                enum:
                - SERVICE_UNAVAILABLE_ERROR
              detail:
                type: string
            required:
            - code
            - detail
      required:
      - errors
      title: serviceUnavailableError
    tooManyRequests:
      type: object
      description: Too Many Requests
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            additionalProperties: false
            type: object
            properties:
              code:
                type: string
                enum:
                - TOO_MANY_REQUESTS
              detail:
                type: string
            required:
            - code
            - detail
      required:
      - errors
      title: tooManyRequests
    internalServerError:
      type: object
      description: Internal Server Error
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              code:
                type: string
                enum:
                - INTERNAL_SERVER_ERROR
              detail:
                type: string
                enum:
                - Sorry, something has gone wrong at our end. If this persists please contact support.
            required:
            - code
            - detail
      required:
      - errors
      title: internalServerError
    meta:
      description: Meta object describing pagination
      type: object
      properties:
        pagination:
          type: object
          unevaluatedProperties: false
          allOf:
          - $ref: '#/components/schemas/pagination'
      required:
      - pagination
      title: meta
    user:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
        companyId:
          type: string
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        email:
          type: string
          format: email
          nullable: true
      required:
      - id
      - companyId
      - firstName
      - lastName
      - email
      title: user
    badRequest:
      type: object
      description: Bad request
      additionalProperties: false
      properties:
        correlationId:
          type: string
        errors:
          type: array
          items:
            additionalProperties: false
            type: object
            properties:
              code:
                type: string
                enum:
                - BAD_REQUEST_INCORRECT_OR_MISSING_FIELD
                - RESPONSE_TOO_LARGE
              detail:
                type: string
              source:
                type: string
            required:
            - code
            - detail
            - source
      required:
      - errors
      title: badRequest
  securitySchemes:
    Authentication:
      type: oauth2
      description: 'A company-level token acts on the company it was issued for. An organisation-level token (experimental) acts on the companies of an organisation: send the target company in the `X-Company-Id` header on every call, except on `GET /v2/companies` and on `/v2/companies/{companyId}/…` routes, which carry the company in the path. See [Organisation-level access](/reference/organisation-level-access).'
      flows:
        clientCredentials:
          tokenUrl: /v1/auth/token
          scopes:
            analytical-field:read: Analytical Fields (Read)
            bank-fee:read: Spending Bank Fees (Read)
            cost-center:read: Cost Center (Read)
            cost-center:manage: Cost Center (Manage)
            expense-category:read: Expense Category (Read)
            payable:read: Spending Payables (Read)
            payable-attachment:read: Spending Payable Attachments (Read)
            settlement:read: Spending Settlements (Read)
            supplier:read: Suppliers (Read)
            user:read: Users (Read)
            experimental:user:manage: Users (Manage)
            wallet-load:read: Spending Wallet Loads (Read)
            wallet-summary:read: Spending Wallet Summary (Read)
            experimental:accounting-export:read: Accounting exports (Read)
            experimental:accounting-export:write: Accounting exports (Write)
            experimental:accounting:update: Accounting (Update)
            experimental:chart-of-accounts:read: Chart of Accounts (Read)
            experimental:chart-of-accounts:write: Chart of Accounts (Write)
            experimental:purchase-order:read: Purchase Orders (Read)
            experimental:purchase-order:write: Purchase Orders (Write)
            experimental:webhooks:read: Webhooks (Read)
            experimental:webhooks:write: Webhooks (Write)
            experimental:supplier:manage: Suppliers (Manage)
            experimental:company:read: Companies (Read)
            experimental:payable-search:read: Payable Search (Read)
            experimental:payable-attachment:write: Payable Attachments (Write)
            experimental:card:read: Cards (Read)
            experimental:card:write: Cards (Write)
            experimental:request:read: Requests (Read)
            experimental:transaction:read: Transactions (Read)
            experimental:analytical-field-v2:read: Analytical Fields v2 (Read)
            experimental:analytical-field-v2:write: Analytical Fields v2 (Write)
            experimental:expense-category-v2:read: Expense Category Fields v2 (Read)
            experimental:expense-category-v2:write: Expense Category Fields v2 (Write)
            experimental:invoice:read: Invoices (Read) - experimental
            experimental:intake:read: Intakes (Read)
            experimental:intake:write: Intakes (Write)
            experimental:external-reference:read: External References (Read)
            experimental:external-reference:write: External References (Write)
        authorizationCode:
          authorizationUrl: /v1/oauth2/authorize
          tokenUrl: /v1/oauth2/token/create
          scopes:
            analytical-field:read: Analytical Fields (Read)
            bank-fee:read: Spending Bank Fees (Read)
            cost-center:read: Cost Center (Read)
            cost-center:manage: Cost Center (Manage)
            expense-category:read: Expense Category (Read)
            payable:read: Spending Payables (Read)
            payable-attachment:read: Spending Payable Attachments (Read)
            settlement:read: Spending Settlements (Read)
            supplier:read: Suppliers (Read)
            user:read: Users (Read)
            experimental:user:manage: Users (Manage)
            wallet-load:read: Spending Wallet Loads (Read)
            wallet-summary:read: Spending Wallet Summary (Read)
            experimental:accounting-export:read: Accounting exports (Read)
            experimental:accounting-export:write: Accounting exports (Write)
            experimental:accounting:update: Accounting (Update)
            experimental:chart-of-accounts:read: Chart of Accounts (Read)
            experimental:chart-of-accounts:write: Chart of Accounts (Write)
            experimental:purchase-order:read: Purchase Orders (Read)
            experimental:purchase-order:write: Purchase Orders (Write)
            experimental:webhooks:read: Webhooks (Read)
            experimental:webhooks:write: Webhooks (Write)
            experimental:supplier:manage: Suppliers (Manage)
            experimental:company:read: Companies (Read)
            experimental:payable-search:read: Payable Search (Read)
            experimental:payable-attachment:write: Payable Attachments (Write)
            experimental:card:read: Cards (Read)
            experimental:card:write: Cards (Write)
            experimental:request:read: Requests (Read)
            experimental:transaction:read: Transactions (Read)
            experimental:analytical-field-v2:read: Analytical Fields v2 (Read)
            experimental:analytical-field-v2:write: Analytical Fields v2 (Write)
            experimental:expense-category-v2:read: Expense Category Fields v2 (Read)
            experimental:expense-category-v2:write: Expense Category Fields v2 (Write)
            experimental:invoice:read: Invoices (Read) - experimental
            experimental:intake:read: Intakes (Read)
            experimental:intake:write: Intakes (Write)
            experimental:external-reference:read: External References (Read)
            experimental:external-reference:write: External References (Write)
x-provenance:
  method: searched
  source: https://developer.spendesk.com/reference
  harvested: '2026-10-14'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developer.spendesk.com/reference/mcp-authorization-server-metadata.md
  - https://developer.spendesk.com/reference/mcp-protected-resource-metadata-mcp.md
  - https://developer.spendesk.com/reference/v1-assign-creditors-to-accounts.md
  - https://developer.spendesk.com/reference/v1-cancel-purchase-order.md
  - https://developer.spendesk.com/reference/v1-close-purchase-order.md
  - https://developer.spendesk.com/reference/v1-create-account.md
  - https://developer.spendesk.com/reference/v1-create-auth-token.md
  - https://developer.spendesk.com/reference/v1-create-cost-centers.md
  - https://developer.spendesk.com/reference/v1-create-journal.md
  - https://developer.spendesk.com/reference/v1-create-oauth2-token.md
  - https://developer.spendesk.com/reference/v1-create-payable-attachment-upload.md
  - https://developer.spendesk.com/reference/v1-create-purchase-order.md
  - https://developer.spendesk.com/reference/v1-create-snapshot-payables.md
  - https://developer.spendesk.com/reference/v1-create-suppliers.md
  - https://developer.spendesk.com/reference/v1-create-webhook.md
  - https://developer.spendesk.com/reference/v1-delete-account.md
  - https://developer.spendesk.com/reference/v1-delete-cost-centers.md
  - https://developer.spendesk.com/reference/v1-delete-mcp.md
  - https://developer.spendesk.com/reference/v1-delete-webhook.md
  - https://developer.spendesk.com/reference/v1-get-account-by-id.md
  - https://developer.spendesk.com/reference/v1-get-accounts.md
  - https://developer.spendesk.com/reference/v1-get-analytical-field-values.md
  - https://developer.spendesk.com/reference/v1-get-analytical-fields.md
  - https://developer.spendesk.com/reference/v1-get-bank-fees.md
  - https://developer.spendesk.com/reference/v1-get-card-blocking-history.md
  - https://developer.spendesk.com/reference/v1-get-card-order.md
  - https://developer.spendesk.com/reference/v1-get-card.md
  - https://developer.spendesk.com/reference/v1-get-cards.md
  - https://developer.spendesk.com/reference/v1-get-cost-centers.md
  - https://developer.spendesk.com/reference/v1-get-expense-categories.md
  - https://developer.spendesk.com/reference/v1-get-external-references.md
  - https://developer.spendesk.com/reference/v1-get-failed-transactions.md
  - https://developer.spendesk.com/reference/v1-get-integrations-export-status.md
  - https://developer.spendesk.com/reference/v1-get-journal-templates.md
  - https://developer.spendesk.com/reference/v1-get-journal.md
  - https://developer.spendesk.com/reference/v1-get-mcp.md
  - https://developer.spendesk.com/reference/v1-get-payable-attachments.md
  - https://developer.spendesk.com/reference/v1-get-payable-by-id.md
  - https://developer.spendesk.com/reference/v1-get-purchase-order-document.md
  - https://developer.spendesk.com/reference/v1-get-purchase-order.md
  - https://developer.spendesk.com/reference/v1-get-purchase-orders.md
  - https://developer.spendesk.com/reference/v1-get-request.md
  - https://developer.spendesk.com/reference/v1-get-requests.md
  - https://developer.spendesk.com/reference/v1-get-settlements.md
  - https://developer.spendesk.com/reference/v1-get-snapshot-payables.md
  - https://developer.spendesk.com/reference/v1-get-successful-transactions.md
  - https://developer.spendesk.com/reference/v1-get-supplier-by-id.md
  - https://developer.spendesk.com/reference/v1-get-suppliers.md
  - https://developer.spendesk.com/reference/v1-get-transactions.md
  - https://developer.spendesk.com/reference/v1-get-user-by-id.md
  - https://developer.spendesk.com/reference/v1-get-users.md
  - https://developer.spendesk.com/reference/v1-get-wallet-loads.md
  - https://developer.spendesk.com/reference/v1-get-wallet-summary.md
  - https://developer.spendesk.com/reference/v1-get-webhook-by-id.md
  - https://developer.spendesk.com/reference/v1-get-webhook.md
  - https://developer.spendesk.com/reference/v1-patch-accounts.md
  - https://developer.spendesk.com/reference/v1-patch-payable-accounting-fields.md
  - https://developer.spendesk.com/reference/v1-patch-supplier-status.md
  - https://developer.spendesk.com/reference/v1-patch-suppliers-status.md
  - https://developer.spendesk.com/reference/v1-post-experimental-integrations-refresh-settings.md
  - https://developer.spendesk.com/reference/v1-post-mcp.md
  - https://developer.spendesk.com/reference/v1-post-payable-mark-as-ready.md
  - https://developer.spendesk.com/reference/v1-put-payables-bookkeeping-status.md
  - https://developer.spendesk.com/reference/v1-put-settlements-state.md
  - https://developer.spendesk.com/reference/v1-refresh-oauth2-token.md
  - https://developer.spendesk.com/reference/v1-register-oauth2-client.md
  - https://developer.spendesk.com/reference/v1-remove-creditors-from-accounts.md
  - https://developer.spendesk.com/reference/v1-request-authorization.md
  - https://developer.spendesk.com/reference/v1-search-creditor-account-assignments.md
  - https://developer.spendesk.com/reference/v1-search-payables.md
  - https://developer.spendesk.com/reference/v1-set-account-purpose.md
  - https://developer.spendesk.com/reference/v1-sync-accounts.md
  - https://developer.spendesk.com/reference/v1-update-cost-centers.md
  - https://developer.spendesk.com/reference/v1-update-supplier.md
  - https://developer.spendesk.com/reference/v1-update-suppliers.md
  - https://developer.spendesk.com/reference/v1-update-webhook.md
  - https://developer.spendesk.com/reference/v1-upsert-external-references.md
  - https://developer.spendesk.com/reference/v2-create-analytical-field-value.md
  - https://developer.spendesk.com/reference/v2-create-analytical-field.md
  - https://developer.spendesk.com/reference/v2-create-expense-category-field.md
  - https://developer.spendesk.com/reference/v2-create-expense-category.md
  - https://developer.spendesk.com/reference/v2-create-intake-file-upload.md
  - https://developer.spendesk.com/reference/v2-delete-analytical-field-value.md
  - https://developer.spendesk.com/reference/v2-delete-analytical-field.md
  - https://developer.spendesk.com/reference/v2-delete-expense-category-field.md
  - https://developer.spendesk.com/reference/v2-delete-expense-category.md
  - https://developer.spendesk.com/reference/v2-get-analytical-field-value.md
  - https://developer.spendesk.com/reference/v2-get-analytical-field.md
  - https://developer.spendesk.com/reference/v2-get-companies.md
  - https://developer.spendesk.com/reference/v2-get-company-intake.md
  - https://developer.spendesk.com/reference/v2-get-expense-category-field.md
  - https://developer.spendesk.com/reference/v2-get-expense-category.md
  - https://developer.spendesk.com/reference/v2-get-intake-file-upload-status.md
  - https://developer.spendesk.com/reference/v2-get-invoice.md
  - https://developer.spendesk.com/reference/v2-get-invoices-summary.md
  - https://developer.spendesk.com/reference/v2-list-analytical-field-values.md
  - https://developer.spendesk.com/reference/v2-list-analytical-fields.md
  - https://developer.spendesk.com/reference/v2-list-company-intakes.md
  - https://developer.spendesk.com/reference/v2-list-expense-categories.md
  - https://developer.spendesk.com/reference/v2-list-expense-category-fields.md
  - https://developer.spendesk.com/reference/v2-list-invoices.md
  - https://developer.spendesk.com/reference/v2-post-company-intakes.md
  - https://developer.spendesk.com/reference/v2-update-analytical-field-value.md
  - https://developer.spendesk.com/reference/v2-update-analytical-field.md
  - https://developer.spendesk.com/reference/v2-update-expense-category-field.md
  - https://developer.spendesk.com/reference/v2-update-expense-category.md
  merge:
    pages: 106
    deduped: 1705
    conflicts_kept_first: 0