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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/cubesoftware-cube-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
openapi: 3.2.0
info:
title: Cube API
version: 1.0.0 (1.0)
description: '#### General Description
An API to access underlying Cube functionality.'
termsOfService: https://www.cubesoftware.com/terms-of-service
servers:
- url: https://api.cubesoftware.com
description: Production API URL
tags:
- name: cube
paths:
/cube:
get:
operationId: cube_list
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
tags:
- cube
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CubeDataRequest'
description: ''
summary: Cube list
x-summary-source: derived
post:
operationId: cube_create
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
tags:
- cube
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CubeDataRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/CubeDataRequest'
required: true
security:
- OAuth2: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
description: ''
summary: Cube create
x-summary-source: derived
/cube/{id}:
get:
operationId: cube_retrieve
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this cube value.
required: true
tags:
- cube
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
description: ''
summary: Cube retrieve
x-summary-source: derived
put:
operationId: cube_update
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this cube value.
required: true
tags:
- cube
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CubeDataRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/CubeDataRequest'
required: true
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
description: ''
summary: Cube update
x-summary-source: derived
patch:
operationId: cube_partial_update
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this cube value.
required: true
tags:
- cube
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedCubeDataRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedCubeDataRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedCubeDataRequest'
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CubeDataRequest'
description: ''
summary: Cube partial update
x-summary-source: derived
delete:
operationId: cube_destroy
description: 'This is a shortcut class that will include all 6 resourceful actions part of the DRF ViewSets:
- list()
- retrieve()
- create()
- update()
- partial_update()
- destroy()
If you do not want to expose all 6 of these in your ViewSet, then use the CubeAuthenticatedViewSet and add the
appropriate mixins to it (see rest_framework.mixins). This will allow the api to behave appropriately and block
requests to unprocessable endpoints. Furthermore, it will make the drf_spectacular documentation be generated more
easily.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this cube value.
required: true
tags:
- cube
security:
- OAuth2: []
responses:
'204':
description: No response body
summary: Cube destroy
x-summary-source: derived
components:
schemas:
PatchedCubeDataRequest:
type: object
description: Mixin to delegate create and update operations to a service class.
properties:
matrix:
$ref: '#/components/schemas/Matrix'
message:
type: string
metadata:
type: object
additionalProperties: {}
default: {}
currency:
$ref: '#/components/schemas/Currency'
background:
type: boolean
default: false
addon:
type: string
readOnly: true
Currency:
type: object
description: "Allows selectively disabling DRF uniqueness validation for ModelSerializers.\n\nModelSerializer runs unique field validation during `is_valid()`, even when the\nserializer is used only to deserialize or reference existing model data (i.e. with\nno intent to create or update an instance). This mixin enables callers to explicitly\nskip uniqueness checks for specific fields in those cases.\n\nUsage:\n serializer = MySerializer(\n data=payload,\n skip_unique_validation_fields=('code',),\n )"
properties:
code:
type: string
maxLength: 10
required:
- code
CubeDataRequest:
type: object
description: Mixin to delegate create and update operations to a service class.
properties:
matrix:
$ref: '#/components/schemas/Matrix'
message:
type: string
metadata:
type: object
additionalProperties: {}
default: {}
currency:
$ref: '#/components/schemas/Currency'
background:
type: boolean
default: false
addon:
type: string
readOnly: true
required:
- addon
- matrix
Matrix:
type: object
properties:
attribute_columns:
type: array
items:
type: integer
minimum: 0
attribute_row:
type: integer
minimum: 0
filters:
type: object
additionalProperties:
type: string
data:
type: array
items:
type: array
items: {}
required:
- data
- filters
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://portal.cubesoftware.com/o/authorize/
tokenUrl: https://api.cubesoftware.com/o/token/
scopes: {}
description: Standard Cube OAuth 2.0 flow