Zype Consumer Authentication API

Consumer-facing OAuth 2.0: retrieve an access token, read token status and revoke a token. 3 operations. login.zype.com serves its own RFC 8414 authorization server metadata document alongside the one on api.zype.com.

Operations 3

POST /oauth/token Retrieving an Access Token #
GET /oauth/token/info Retrieving Access Token Status #
POST /oauth/revoke Revoke Access Token

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/login"
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

zype-login.json Raw ↑
{
  "openapi": "3.0.1",
  "info": {
    "title": "Consumer Authentication",
    "version": "1.0.0",
    "description": ""
  },
  "servers": [
    {
      "url": "https://login.zype.com"
    }
  ],
  "paths": {
    "/oauth/token": {
      "post": {
        "summary": "Retrieving an Access Token",
        "description": "The password grant flow allows you to pass in a user\u2019s username (email address) and password to get an access token in return.",
        "tags": [
          "Oauth"
        ],
        "operationId": "retrieveAccessToken",
        "requestBody": {
          "description": "",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "title": "TokenRequest",
                "type": "object",
                "required": [
                  "client_id",
                  "client_secret",
                  "username",
                  "grant_type"
                ],
                "properties": {
                  "client_id": {
                    "type": "string",
                    "description": "The client ID for your Zype application"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "The client secret for your Zype application"
                  },
                  "username": {
                    "type": "string",
                    "description": "The username (email) of the consumer. *Note: Password is required if username is used to authenticate.*"
                  },
                  "password": {
                    "type": "string",
                    "description": "Password of the consumer. *Note: Required if using username to authenticate.*"
                  },
                  "linked_device_id": {
                    "type": "string",
                    "description": "The linked device ID of the consumer. *Note: Pin is required if linked device ID is used to authenticate.*"
                  },
                  "pin": {
                    "type": "string",
                    "description": "The pin for the linked device. *Note: Required if using linked device ID to authenticate.*"
                  },
                  "grant_type": {
                    "type": "string",
                    "enum": [
                      "password",
                      "refresh_token"
                    ],
                    "description": "Use `password` to initially authenticate and `refresh_token` to refresh the consumer's access token."
                  },
                  "refresh_token": {
                    "type": "string",
                    "description": "Use this token if you wish to extend the access time the consumer has without having to re-authenticate."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "title": "TokenResponse",
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "description": "Token used to grant access for a consumer",
                      "type": "string"
                    },
                    "token_type": {
                      "description": "Set by Zype - will be 'bearer'",
                      "type": "string"
                    },
                    "expires_in": {
                      "description": "Time (in seconds) when token is set to expire",
                      "type": "number"
                    },
                    "refresh_token": {
                      "description": "Token to use to refresh access_token",
                      "type": "string"
                    },
                    "scope": {
                      "description": "The type of access this token provides",
                      "type": "string"
                    },
                    "grant_type": {
                      "description": "Use `refresh_token`. Required for access token refresh.",
                      "type": "string"
                    },
                    "created_at": {
                      "description": "07-17T14:58:20.109-04:00",
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Token Error",
            "content": {
              "application/json": {
                "schema": {
                  "title": "Token Error Response",
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "error_description": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Token Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1oauth~1token/post/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/oauth/token/info": {
      "get": {
        "summary": "Retrieving Access Token Status",
        "description": "",
        "tags": [
          "Oauth"
        ],
        "operationId": "retrieveAccessTokenStatus",
        "parameters": [
          {
            "name": "access_token",
            "in": "query",
            "required": true,
            "description": "The access token created via Oauth",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "title": "TokenInfoResponse",
                  "type": "object",
                  "properties": {
                    "resource_owner_id": {
                      "type": "string",
                      "description": "ID of the consumer"
                    },
                    "scopes": {
                      "type": "array",
                      "description": "Will be deprecated 06/2023, use `scope` instead."
                    },
                    "scope": {
                      "type": "array"
                    },
                    "expires_in_seconds": {
                      "description": "Will be deprecated 06/2023, use `expires_in`",
                      "type": "integer"
                    },
                    "expires_in": {
                      "type": "integer"
                    },
                    "application": {
                      "type": "object",
                      "properties": {
                        "uid": {
                          "type": "string"
                        }
                      }
                    },
                    "created_at": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Token Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1oauth~1token/post/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/oauth/revoke": {
      "post": {
        "summary": "Revoke Access Token",
        "description": "This requests revokes an access token, removing the session from the active logins list.",
        "tags": [
          "Oauth"
        ],
        "requestBody": {
          "description": "",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "title": "TokenRevokeRequest",
                "type": "object",
                "required": [
                  "client_id",
                  "client_secret",
                  "token"
                ],
                "properties": {
                  "client_id": {
                    "type": "string"
                  },
                  "client_secret": {
                    "type": "string"
                  },
                  "token": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The endpoint always returs 200"
          }
        }
      }
    }
  }
}