Playable OAUTH API

OAuth

Operations 1

POST /oauth/token Authentication

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/playable-oauth-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

playable-oauth-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Swagger with Laravel OAUTH API
  description: 'This documentation aims to provide all the information you need to work with our API.


    ***Rate limiting***


    APIs are bound by rate limiting. The default rate limiting allows for 3.600 API interactions an hour per developer app (not IP).

    You are **NOT** allowed to attempt by-pass of rate limiting by creating multiple apps and distribute your traffic across these.

    If an API has a different rate limit it will be described in the description of the API.


    ***Every API response contains 2 extra headers***

    1. `X-RateLimit-Limit` max number of requests you can do in the defined period.

    2. `X-RateLimit-Remaining` how many requests you have left before hitting the rate limit.


    ***Required Headers***

    1. `Authorization` used to provide credentials that authenticate an application.

    2. `Accept` specifies the response type. Only "application/json" is supported.


    Once you''ve hit your rate limit the response will also include `Retry-After`. This will be the seconds in which you will have to wait for doing additional API requests.


    ***Throughout***

    The API is designed to allow 3.600 requests per hour per developer app. This is a hard limit and cannot be increased.


    ***Caching***

    Playable *expect* implementations to be mindful of not overloading the API with requests.

    Playable **expect** implementations to cache data where possible and only request data when it''s needed.

    If you''re found to be abusing the API by not caching data, you may be subject to rate limiting or have your access revoked.

    '
  version: 1.0.0
servers:
- url: https://api.playable.com
  description: Production
- url: https://api.dev.playable.com
  description: QA
security:
- clientCredentials:
  - campaigns.list
  - campaigns.view
  - campaigns.pause
  - campaigns.resume
  - campaigns.activate
  - campaigns.integrations.list
  - campaigns.game-data-statistics
  - campaigns.game-settings.view
  - campaigns.game-settings.modify
  - campaigns.sections.list
  - campaigns.sections.view
  - campaigns.sections.form-fields.list
  - campaigns.sections.form-fields.view
  - campaigns.prizes.list
  - campaigns.prizes.view
  - campaigns.bulk-prizes.list
  - campaigns.bulk-prizes.view
  - campaigns.bulk-prizes.modify
  - campaigns.bulk-prizes-items.send-email
  - campaigns.email-log.list
  - campaigns.email-log.view
  - campaigns.sms-log.list
  - campaigns.sms-log.view
  - campaigns.registrations.list
  - campaigns.registrations.view
  - campaigns.registrations.delete
  - campaigns.voucher.list
  - campaigns.voucher.view
  - campaigns.voucher.delete
  - campaigns.types.list
  - campaigns.types.view
  - campaigns.copy
  - campaigns.modify
  - campaigns.delete
  - campaigns.clear-cache
  - media.upload
  - user.create-login-token
tags:
- name: oauth
  description: OAuth
paths:
  /oauth/token:
    post:
      tags:
      - oauth
      summary: Authentication
      description: '***Authenticating requests***


        To authenticate requests, include an **`Authorization`** header with the value **`"Bearer {{ACCESS_TOKEN}}"`**.


        All authenticated endpoints are marked with a `requires authentication` badge in the documentation below.


        You can create your own app to gain API access under __Global settings__ / __Developer apps__.


        * campaigns.list

        * campaigns.view

        * campaigns.pause

        * campaigns.resume

        * campaigns.integrations.list

        * campaigns.game-data-statistics

        * campaigns.sections.list

        * campaigns.sections.view

        * campaigns.sections.form-fields.list

        * campaigns.sections.form-fields.view

        * campaigns.prizes.list

        * campaigns.prizes.view

        * campaigns.bulk-prizes.list

        * campaigns.bulk-prizes.view

        * campaigns.bulk-prizes-items.send-email

        * campaigns.email-log.list

        * campaigns.email-log.view

        * campaigns.sms-log.list

        * campaigns.sms-log.view

        * campaigns.registrations.list

        * campaigns.registrations.view

        * campaigns.registrations.delete

        * campaigns.voucher.list

        * campaigns.voucher.view

        * campaigns.voucher.delete

        * campaigns.types.list

        * campaigns.types.view

        * campaigns.copy

        * campaigns.clear-cache

        * media.upload

        * user.create-login-token


        ***Issue Token***


        This API issues a new access token. List over available scopes can be seen under the authentication introduction.

        Access tokens have a life-span of 1 hour. Once expired you will have to generate a new access token.

        We expect implementations to re-use access tokens generated for as long as they''re active.


        Applications found to be generating new access tokens when existing ones haven''t expired may be subject to rate limiting.

        Scope can be declared singular as string or multiple as array within a single request.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - grant_type
              - client_id
              - client_secret
              properties:
                grant_type:
                  description: The type of grant being requested
                  type: string
                  example: client_credentials
                client_id:
                  description: The client ID issued to the client
                  type: string
                  example: your-client-id
                client_secret:
                  description: The client secret issued to the client
                  type: string
                  example: your-client-secret
                scope:
                  description: Scopes allowed to interact with
                  type: array
                  items:
                    type: string
                    enum:
                    - campaigns.list
                    - campaigns.view
                    - campaigns.pause
                    - campaigns.resume
                    - campaigns.integrations.list
                    - campaigns.game-data-statistics
                    - campaigns.sections.list
                    - campaigns.sections.view
                    - campaigns.sections.form-fields.list
                    - campaigns.sections.form-fields.view
                    - campaigns.prizes.list
                    - campaigns.prizes.view
                    - campaigns.bulk-prizes.list
                    - campaigns.bulk-prizes.view
                    - campaigns.bulk-prizes-items.send-email
                    - campaigns.email-log.list
                    - campaigns.email-log.view
                    - campaigns.sms-log.list
                    - campaigns.sms-log.view
                    - campaigns.registrations.list
                    - campaigns.registrations.view
                    - campaigns.registrations.delete
                    - campaigns.voucher.list
                    - campaigns.voucher.view
                    - campaigns.voucher.delete
                    - campaigns.types.list
                    - campaigns.types.view
                    - campaigns.copy
                    - campaigns.clear-cache
                    - media.upload
                    - user.create-login-token
                  example:
                  - campaigns.list
                  - campaigns.view
                  - campaigns.pause
                  - campaigns.resume
                  - campaigns.integrations.list
                  - campaigns.game-data-statistics
                  - campaigns.sections.list
                  - campaigns.sections.view
                  - campaigns.sections.form-fields.list
                  - campaigns.sections.form-fields.view
                  - campaigns.prizes.list
                  - campaigns.prizes.view
                  - campaigns.bulk-prizes.list
                  - campaigns.bulk-prizes.view
                  - campaigns.bulk-prizes-items.send-email
                  - campaigns.email-log.list
                  - campaigns.email-log.view
                  - campaigns.sms-log.list
                  - campaigns.sms-log.view
                  - campaigns.registrations.list
                  - campaigns.registrations.view
                  - campaigns.registrations.delete
                  - campaigns.voucher.list
                  - campaigns.voucher.view
                  - campaigns.voucher.delete
                  - campaigns.types.list
                  - campaigns.types.view
                  - campaigns.copy
                  - campaigns.clear-cache
                  - media.upload
                  - user.create-login-token
              type: object
      responses:
        '200':
          description: Issue token to api
          content:
            application/json:
              schema:
                properties:
                  token_type:
                    type: string
                    example: token_type
                  expires_in:
                    type: integer
                    example: '3600'
                  access_token:
                    type: string
                    example: token
                type: object
        '400':
          description: Invalid request
        '401':
          description: 'Unauthorized.


            Possible reasons:

            Token has expired

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: 'message": "Unauthenticated.'
components:
  securitySchemes:
    clientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          scopes:
            campaigns.list: Grant right to
            campaigns.view: Grant right to
            campaigns.pause: Grant right to
            campaigns.resume: Grant right to
            campaigns.activate: Grant right to
            campaigns.integrations.list: Grant right to
            campaigns.game-data-statistics: Grant right to
            campaigns.game-settings.view: Grant right to
            campaigns.game-settings.modify: Grant right to
            campaigns.sections.list: Grant right to
            campaigns.sections.view: Grant right to
            campaigns.sections.form-fields.list: Grant right to
            campaigns.sections.form-fields.view: Grant right to
            campaigns.prizes.list: Grant right to
            campaigns.prizes.view: Grant right to
            campaigns.bulk-prizes.list: Grant right to
            campaigns.bulk-prizes.view: Grant right to
            campaigns.bulk-prizes.modify: Grant right to
            campaigns.bulk-prizes-items.send-email: Grant right to
            campaigns.email-log.list: Grant right to
            campaigns.email-log.view: Grant right to
            campaigns.sms-log.list: Grant right to
            campaigns.sms-log.view: Grant right to
            campaigns.registrations.list: Grant right to
            campaigns.registrations.view: Grant right to
            campaigns.registrations.delete: Grant right to
            campaigns.voucher.list: Grant right to
            campaigns.voucher.view: Grant right to
            campaigns.voucher.delete: Grant right to
            campaigns.types.list: Grant right to
            campaigns.types.view: Grant right to
            campaigns.copy: Grant right to
            campaigns.modify: Grant right to
            campaigns.delete: Grant right to
            campaigns.clear-cache: Grant right to
            media.upload: Grant right to
            user.create-login-token: Grant right to