WM

WM Services API

Account services, schedule, status, and ETA.

Documentation

Specifications

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/wm-services-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 email required.

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

OpenAPI Specification

wm-services-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: WM Customer Activities Services API
  description: 'Documented, partner/customer-gated REST API published by WM (formerly Waste Management, Inc.) at https://api.wm.com/. Exposes account-level service, billing, and support data - service and pickup information, live status/ETA, routing and hauling materials, pricing, invoices and balance, communication preferences, contacts, cases, tickets, and account activity notes. There is no self-serve signup: WM issues a ClientId and JSON Web Token (JWT) to approved commercial/enterprise customers and integration partners on request to apiaccess@wm.com. Endpoint paths, parameters, and response fields below are transcribed from WM''s published API documentation; fields not disclosed in that documentation are left as an open JSON object rather than invented.'
  version: '1.0'
  contact:
    name: WM API Access
    email: apiaccess@wm.com
    url: https://api.wm.com/
  license:
    name: Proprietary - partner/customer use per WM terms
servers:
- url: https://api.wm.com/v1
  description: Production
- url: https://apitest.wm.com/v1
  description: Test
security:
- bearerAuth: []
tags:
- name: Services
  description: Account services, schedule, status, and ETA.
paths:
  /customers/{customerId}/services:
    get:
      operationId: listServices
      tags:
      - Services
      summary: List services
      description: Retrieve detailed information on the services associated with an account, including service names, material streams, container volumes, and pricing structures, plus the status of services scheduled for today.
      parameters:
      - $ref: '#/components/parameters/CustomerId'
      - name: line_of_business
        in: query
        required: false
        description: Filter by line of business.
        schema:
          type: string
          enum:
          - RESIDENTIAL
          - COMMERCIAL
          - ROLLOFF
      responses:
        '200':
          description: Services for the account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_tracking_id:
                    type: string
                  services:
                    type: array
                    items:
                      $ref: '#/components/schemas/Service'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{customerId}/services/plan:
    get:
      operationId: getServicePlan
      tags:
      - Services
      summary: List planned services
      description: Obtain service execution details for today's scheduled services.
      parameters:
      - $ref: '#/components/parameters/CustomerId'
      responses:
        '200':
          description: Today's planned service execution details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAccountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{customerId}/services/stats:
    get:
      operationId: getServiceStats
      tags:
      - Services
      summary: List service statistics
      description: Access the status and details of completed services - whether a scheduled service has not yet occurred, completed successfully, or had a problem.
      parameters:
      - $ref: '#/components/parameters/CustomerId'
      responses:
        '200':
          description: Completed-service status and details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAccountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{customerId}/services/next-pickup:
    get:
      operationId: getNextPickup
      tags:
      - Services
      summary: List next pickup
      description: View the next scheduled pickup date for the account's services.
      parameters:
      - $ref: '#/components/parameters/CustomerId'
      responses:
        '200':
          description: Next scheduled pickup information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAccountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /customers/{customerId}/services/{serviceId}/eta:
    get:
      operationId: getServiceEta
      tags:
      - Services
      summary: Get service ETA
      description: Retrieve the estimated truck arrival time (ETA) for a service in progress today.
      parameters:
      - $ref: '#/components/parameters/CustomerId'
      - name: serviceId
        in: path
        required: true
        description: Unique service identifier.
        schema:
          type: string
      responses:
        '200':
          description: Estimated arrival time for the service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericAccountResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    GenericAccountResponse:
      type: object
      description: WM's published documentation does not disclose full response field detail for this resource; the response is a JSON object scoped to the requesting customer account.
      properties:
        request_tracking_id:
          type: string
      additionalProperties: true
    Service:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        occurs:
          type: string
        taxable:
          type: boolean
        type_code:
          type: string
        enterprise_catalog:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            category:
              type: string
            subcategory:
              type: string
            line_of_business:
              type: string
        material:
          type: object
          properties:
            code:
              type: string
            name:
              type: string
            special_handling:
              type: boolean
            manifest:
              type: boolean
        equipment:
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            volume:
              type: number
            unit_of_measure:
              type: string
            container_count:
              type: integer
        pricing:
          type: object
          properties:
            base_monthly_cost:
              type: number
            disposal_rate_type:
              type: string
            disposal_rate_amount:
              type: number
            currency_code:
              type: string
  responses:
    Unauthorized:
      description: Missing or invalid Authorization/ClientId.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
  parameters:
    CustomerId:
      name: customerId
      in: path
      required: true
      description: Unique customer account identifier.
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: WM issues a JSON Web Token (JWT) and a ClientId to approved partners/customers. Send the token in the Authorization header and the ClientId in the ClientId header on every request.