Wikimedia Enterprise Authentication API

Login, token refresh/revoke, and password management. Tokens are JWTs.

Operations 7

POST /v1/login Login #
POST /v1/token-refresh Refresh Token #
POST /v1/token-revoke Revoke Token #
POST /v1/forgot-password Forgot Password #
POST /v1/forgot-password-confirm Forgot Password Confirmation #
POST /v1/change-password Change Password #
POST /v1/new-password-required New Password Required #

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/enterprise-wikimedia-com:enterprise-wikimedia-com-authentication-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

enterprise-wikimedia-com-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wikimedia Enterprise Authentication API
  version: 2.0.0
  description: 'The Wikimedia Enterprise API provides high-volume, read-only access to Wikipedia and other supported Wikimedia projects.


    This single specification covers all Wikimedia Enterprise APIs:


    - **Authentication** (`auth.enterprise.wikimedia.com`) - exchange credentials for JWT access and refresh tokens.

    - **Metadata, Snapshot, and On-demand** (`api.enterprise.wikimedia.com`) - reference data, bulk downloads, and single-article lookups, plus Realtime (Batch) hourly files.

    - **Realtime** (`realtime.enterprise.wikimedia.com`) - streaming article and Wikidata updates.


    All data endpoints are read-only. Most accept either a `GET` request or a `POST` whose JSON body carries `fields`, `filters`, and `limit` to shape the response - the `POST` form never modifies data.


    Authenticated endpoints expect a `Bearer` JWT access token in the `Authorization` header. Content is Wikimedia project text, licensed CC-BY-SA-4.0.'
  license:
    name: CC-BY-SA-4.0
    url: https://creativecommons.org/licenses/by-sa/4.0/
  contact:
    name: Commercial Partnerships Division
    url: https://enterprise.wikimedia.com/contact/
  termsOfService: https://enterprise.wikimedia.com/terms/
servers:
- url: https://api.enterprise.wikimedia.com
  description: Metadata, Snapshot, and On-demand APIs, plus Realtime (Batch) files
- url: https://auth.enterprise.wikimedia.com
  description: Authentication API
- url: https://realtime.enterprise.wikimedia.com
  description: Realtime streaming API
security:
- bearerAuth: []
tags:
- name: Authentication
  description: Login, token refresh/revoke, and password management. Tokens are JWTs.
paths:
  /v1/login:
    summary: Receive auth tokens by providing a username and password
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Login
      description: Create new access, id, and refresh tokens with your valid username and password.
      operationId: v1-login
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  example: admin
                password:
                  type: string
                  example: j8BDWYrQwDF5u4Yu
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/login'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/token-refresh:
    summary: Receive auth tokens by providing a refresh token
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Refresh Token
      description: Provides new access and id tokens with your valid username and refresh token.
      operationId: v1-token-refresh
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  example: admin
                refresh_token:
                  type: string
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/refresh_token'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/token-revoke:
    summary: Revoke all access tokens generated by a refresh token
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Revoke Token
      description: Revokes the associated access tokens with your valid refresh token.
      operationId: v1-token-revoke
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                refresh_token:
                  type: string
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
      responses:
        '204':
          description: Token was successfully revoked
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/forgot-password:
    summary: Start the forgot-password flow for a given user
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Forgot Password
      description: Sends a confirmation code via email. That code is then required to change user's password using /v1/forgot-password-confirm.
      operationId: v1-forgot-password
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  example: admin
      responses:
        '204':
          description: Confirmation code sent successfully
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/forgot-password-confirm:
    summary: Change a user password as part of the forgot-password flow
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Forgot Password Confirmation
      description: Changes user password with your valid username, confirmation_code sent to your email from previously hitting /v1/forgot-password endpoint, and new password.
      operationId: v1-forgot-password-confirm
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  example: admin
                password:
                  type: string
                  example: j8BDWYrQwDF5u4Yu
                confirmation_code:
                  type: string
                  example: 6MadrbRF
      responses:
        '204':
          description: Password reset successfully
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/change-password:
    summary: Replace an old user password with a new password
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: Change Password
      description: 'Changes user password with your valid access token, current password, and a new proposed password.


        **Note:** This endpoint currently accepts the access token in the request body (`access_token` field) rather than via the `Authorization: Bearer` header. A future API version will align it with the rest of the platform''s bearer-auth convention.'
      operationId: v1-change-password
      tags:
      - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                access_token:
                  type: string
                  example: sInR5cCI6IkpXVCJ9eyJhbGciOiJIUzI1NiI
                previous_password:
                  type: string
                  example: j8BDWYrQwDF5u4Yu
                proposed_password:
                  type: string
                  example: b2BDWZrQwDF5u4Yu
      responses:
        '204':
          description: Successful password change
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
  /v1/new-password-required:
    summary: Respond to a new-password-required challenge
    servers:
    - url: https://auth.enterprise.wikimedia.com
      description: Authentication API
    post:
      summary: New Password Required
      description: Responds `NEW_PASSWORD_REQUIRED` challenge by receiving username and session token and setting new password.
      operationId: v1-new-password-required
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session:
                  type: string
                  example: eyJhbGcisInR5cCI6IkOiJIUzI1NiIpXVCJ9
                username:
                  type: string
                  example: admin
                new_password:
                  type: string
                  example: b2BDWZrQwDF5u4Yu
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/new_password_required'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
components:
  schemas:
    new_password_required:
      type: object
      description: Tokens returned after completing the New Password Required flow
      properties:
        id_token:
          type: string
          description: JSON Web Token (JWT) identifying the owner of the Wikimedia Enterprise account. Not used to authorize API requests
        access_token:
          type: string
          description: JSON Web Token (JWT) that authorizes API requests. Send it as a Bearer token in the Authorization header. Expires after 24 hours
        refresh_token:
          type: string
          description: JSON Web Token (JWT) used to obtain a new access token from the Token Refresh endpoint. Expires after 90 days
        session:
          type: string
          description: Session token identifying this authentication session, used only in the New Password Required flow
        expires_in:
          type: integer
          description: Number of seconds until the access token expires
          example: 86400
    error:
      type: object
      description: Error response returned when a request fails
      properties:
        message:
          type: string
          description: Human-readable description of the error
        status:
          type: integer
          description: HTTP status code of the error
    refresh_token:
      type: object
      description: Tokens returned after refreshing an access token
      properties:
        id_token:
          type: string
          description: JSON Web Token (JWT) identifying the owner of the Wikimedia Enterprise account. Not used to authorize API requests
        access_token:
          type: string
          description: JSON Web Token (JWT) that authorizes API requests. Send it as a Bearer token in the Authorization header. Expires after 24 hours
        expires_in:
          type: integer
          description: Number of seconds until the access token expires
          example: 86400
    login:
      type: object
      description: Tokens returned after a successful login
      properties:
        id_token:
          type: string
          description: JSON Web Token (JWT) identifying the owner of the Wikimedia Enterprise account. Not used to authorize API requests
        access_token:
          type: string
          description: JSON Web Token (JWT) that authorizes API requests. Send it as a Bearer token in the Authorization header. Expires after 24 hours
        refresh_token:
          type: string
          description: JSON Web Token (JWT) used to obtain a new access token from the Token Refresh endpoint. Expires after 90 days
        expires_in:
          type: integer
          description: Number of seconds until the access token expires
          example: 86400
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
externalDocs:
  description: Wikimedia Enterprise API documentation
  url: https://enterprise.wikimedia.com/docs/
x-tagGroups:
- name: Authentication
  tags:
  - authentication
- name: Metadata
  tags:
  - codes
  - languages
  - projects
  - namespaces
- name: Snapshots
  tags:
  - snapshots
  - structured-snapshots
  - wikidata-snapshots
- name: On-demand
  tags:
  - articles
  - structured-contents
  - wikidata
- name: Realtime
  tags:
  - realtime-articles
  - batches
  - realtime-wikidata
  - wikidata-batches