Celonis Data API
The Data API from Celonis — 2 operation(s) for data.
The Data API from Celonis — 2 operation(s) for data.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/celonis-data-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: OpenAPI Specification Data API
description: EMS API to work with Knowledge Model elements, like records, kpis, filters and their related data.
x-audience: EX
version: v1.32.0
servers:
- url: https://b0eca2bc-fbc3-400f-b855-9fe468151d15.remockly.com
security:
- BearerAuth: []
- ApiKeyAuth: []
tags:
- name: Data
paths:
/intelligence/api/knowledge-models/{km_id}/data:
get:
operationId: getKnowledgeModelDataResult
tags:
- Data
summary: Get a list of KM data
description: Data for a Knowledge Model
parameters:
- name: km_id
in: path
required: true
schema:
type: string
example: open-purchase-requisition.purchase-requisition-km
- $ref: '#/components/parameters/filtersParam'
- $ref: '#/components/parameters/fieldsOptionalParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
- $ref: '#/components/parameters/sortParamKm'
- $ref: '#/components/parameters/filterExprParam'
- $ref: '#/components/parameters/options'
- $ref: '#/components/parameters/kpisParam'
- $ref: '#/components/parameters/searchTerm'
- $ref: '#/components/parameters/searchPrecision'
- $ref: '#/components/parameters/searchField'
responses:
'200':
description: List of Knowledge Model data
content:
application/json:
schema:
$ref: '#/components/schemas/recordResultPageDTO'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
post:
tags:
- Data
summary: Get a list of KM data with advanced filtering
description: Query Data for a Knowledge Model that is combining different Records, this endpoint allows clients to easily include more complicated queries.
operationId: getKnowledgeModelQueryResultByUsingQueryInBody
parameters:
- name: km_id
in: path
required: true
style: simple
explode: false
schema:
type: string
example: open-purchase-requisition.purchase-requisition-km
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KmQueryDataRequest'
required: true
responses:
'200':
description: List of Knowledge Model data.
content:
application/json:
schema:
$ref: '#/components/schemas/recordResultPageDTO'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/intelligence/api/knowledge-models/{km_id}/records/{record_id}/data:
get:
operationId: getRecordDataResult
tags:
- Data
summary: Get a list of KM Record data
description: Data for a Record in the Knowledge Model.
parameters:
- name: km_id
in: path
required: true
schema:
type: string
example: open-purchase-requisition.purchase-requisition-km
- name: record_id
in: path
required: true
schema:
type: string
example: MATERIALS
- $ref: '#/components/parameters/filtersParam'
- $ref: '#/components/parameters/fieldsParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
- $ref: '#/components/parameters/sortParamRecord'
- $ref: '#/components/parameters/filterExprParam'
- $ref: '#/components/parameters/options'
- $ref: '#/components/parameters/searchTerm'
- $ref: '#/components/parameters/searchPrecision'
- $ref: '#/components/parameters/searchField'
responses:
'200':
description: List of Record data.
content:
application/json:
schema:
$ref: '#/components/schemas/recordResultPageDTO'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
post:
tags:
- Data
summary: Get a list of KM Record data with advanced filtering
description: Query Data for a Record in the Knowledge Model. This endpoint allows clients to easily include more complicated queries.
operationId: getRecordDataResultByUsingQueryInBody
parameters:
- name: km_id
in: path
required: true
style: simple
explode: false
schema:
type: string
example: open-purchase-requisition.purchase-requisition-km
- name: record_id
in: path
required: true
style: simple
explode: false
schema:
type: string
example: MATERIALS
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/KmQueryRecordDataRequest'
required: true
responses:
'200':
description: List of Record data.
content:
application/json:
schema:
$ref: '#/components/schemas/recordResultPageDTO'
'400':
description: Bad Request.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
'401':
description: Unauthorized access.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/authErrorDTO'
'403':
description: Forbidden.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
'404':
description: The specified resource was not found.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
'429':
description: Too Many Requests.
headers:
X-RateLimit-Limit:
description: Request limit per hour.
schema:
type: integer
format: int32
X-RateLimit-Remaining:
description: The number of requests left for the time window.
schema:
type: integer
format: int32
X-RateLimit-Reset:
description: The UTC date/time at which the current rate limit window. resets.
schema:
type: string
format: date-time
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
'500':
description: Internal Server Error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
'503':
description: Service Unavailable.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
components:
schemas:
recordResultPageDTO:
title: Record data result page
type: object
additionalProperties: false
properties:
content:
$ref: '#/components/schemas/recordItemDTO'
allOf:
- $ref: '#/components/schemas/resultPage'
Projection:
type: object
properties:
fields:
$ref: '#/components/schemas/KmRecordFieldsProjection'
filters:
$ref: '#/components/schemas/FiltersProjection'
pagination:
$ref: '#/components/schemas/KmPaginationProjection'
sort:
$ref: '#/components/schemas/SortProjectionKm'
options:
$ref: '#/components/schemas/KmOptionsProjection'
kpis:
$ref: '#/components/schemas/KpisProjection'
search:
$ref: '#/components/schemas/SearchProjection'
description: Defines the projection criteria for the Knowledge Model query.
resultPage:
title: Result page
type: object
properties:
page:
type: integer
description: Page
example: 0
pageSize:
type: integer
description: Page size, defined by pageSize parameter
example: 50
total:
type: integer
description: Total elements returned in the page
example: 1
sort:
type: array
items:
type: string
example: material_number
errorDTO:
title: Error
type: object
description: This [RFC7807] specification is to define common error formats for those applications that need one, so that they aren't required to define their own, or worse, tempted to redefine the semantics of existing HTTP status codes. This definition was copied from https://datatracker.ietf.org/doc/html/rfc7807
properties:
title:
type: string
description: A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4). This definition was copied from https://datatracker.ietf.org/doc/html/rfc7807
status:
type: integer
description: The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. This definition was copied from https://datatracker.ietf.org/doc/html/rfc7807
detail:
type: string
description: The details of the Error
errorCode:
type: string
description: Unique Identifier of the Error
type:
type: string
description: A URI reference [RFC3986] that identifies the problem type. This definition was copied from https://datatracker.ietf.org/doc/html/rfc7807
KmRecordDataRequestProjection:
required:
- fields
type: object
properties:
fields:
$ref: '#/components/schemas/KmRecordFieldsProjection'
filters:
$ref: '#/components/schemas/FiltersProjection'
pagination:
$ref: '#/components/schemas/KmPaginationProjection'
sort:
$ref: '#/components/schemas/SortProjectionRecord'
options:
$ref: '#/components/schemas/KmOptionsProjection'
search:
$ref: '#/components/schemas/SearchProjection'
description: Defines the parameters related to the query to be executed against the Knowledge Model Record.
FiltersProjection:
type: object
properties:
kmFilterNames:
type: array
description: List of predefined Knowledge Model filter names to apply.
example:
- filter1
- filter2
- filter3
items:
type: string
filterExpr:
type: array
description: List of raw filter expressions (e.g., OData syntax).
example:
- active eq true and name ne 'John Doe'
items:
type: string
description: Defines filtering criteria for the Knowledge Model query.
KmOptionsProjection:
maxItems: 1
minItems: 0
type:
- array
- 'null'
description: Set different options to customize the data results for a projection.
items:
$ref: '#/components/schemas/KmOptionsValues'
SortProjectionKm:
description: 'Defines the order in which results are returned (Knowledge Model–level query body).
The `sort` property must be a comma-separated list of record fields and/or KPIs.
Any value used in `sort` **must also be included** in the `fields` or `kpis` properties.
If a value appears in `sort` but is **not** included in `fields` or `kpis`, the API cannot evaluate it and sorting will not be applied correctly.
If a non-existing field is provided, the request will return an error.
Sort direction is specified using optional prefixes:
- `+` for ascending order (ASC)
- `-` for descending order (DESC)
- No prefix defaults to ascending order (ASC)
**Examples** (string value in `projection.sort`)
- `+record1_id.field1` (sorting in ascending order by a record field)
- `-record1_id.field2,kpi1` (sorting in descending order by a record field and in ascending order by a KPI)
- `record1_id.field1,-kpi2` (sorting in ascending order by a record field and in descending order by a KPI)
- `-kpi1` (sorting in descending order by a KPI)'
type:
- string
- 'null'
minLength: 2
maxLength: 2048
example: +record1_id.field1,-record1_id.field2,kpi1
SortProjectionRecord:
description: 'Defines the order in which results are returned (record-level query body).
The `sort` property must be a comma-separated list of record fields.
Any value used in `sort` **must also be included** in the `fields` property.
If a value appears in `sort` but is **not** included in `fields`, the API cannot evaluate it and sorting will not be applied correctly.
If a non-existing field is provided, the request will return an error.
Sort direction is specified using optional prefixes:
- `+` for ascending order (ASC)
- `-` for descending order (DESC)
- No prefix defaults to ascending order (ASC)
**Examples** (string value in `projection.sort`)
- `+field1` (sorting in ascending order by a record field)
- `-field2,field1` (sorting in descending order by a record field and in ascending order by another record field)'
type:
- string
- 'null'
minLength: 2
maxLength: 2048
example: +field1,-field2,field3
KpisProjection:
type: array
description: List of KPIs.
items:
type: string
KmRecordFieldsProjection:
maxLength: 2048
minLength: 1
type: string
description: Projection of KM Record fields expressed as a comma separated list of Record Fields names to be used.
example: material_name,material_number,material_group
KmOptionsValues:
type: string
description: "Set different **options to customize the data results** for a query. Supported options \n* **Distinct**: Enable the unique data results for a query\n"
enum:
- distinct
KmQueryDataRequest:
required:
- projection
type: object
properties:
projection:
$ref: '#/components/schemas/Projection'
description: The top-level request object for querying the Knowledge Model.
SearchProjection:
type: object
properties:
term:
type: string
description: The search term or keyword.
example: tot_revenue
field:
type: string
description: Optional specific field to search within. If omitted, searches across all relevant fields.
example: revenue
precision:
maximum: 100
minimum: 0
type: integer
description: The precision level for the search (e.g., fuzzy matching tolerance).
format: int32
example: 10
description: Defines search criteria for full-text search or specific field search.
authErrorDTO:
title: Authentication Error
type: object
properties:
error:
type: string
KmQueryRecordDataRequest:
required:
- projection
type: object
properties:
projection:
$ref: '#/components/schemas/KmRecordDataRequestProjection'
description: The top-level request records for querying the Knowledge Model.
recordItemHeaderDTO:
title: Record Item Header
type: object
properties:
id:
type: string
description: Field identity to use in field list param and filterExpression param
name:
type: string
description: Human understandable text
type:
type: string
enum:
- integer
- date
- time
- datetime
- timestamp
- float
- boolean
- string
description: Possible data types.
format:
type: string
description: Format expression
unit:
type: string
description: A complementary sign for format value view
aggregation:
type: boolean
default: false
description: Indicate if a field is a aggregation/calculated information(KPI).
filterable:
type: boolean
default: false
description: Indicate if the field could be filtered.
sortable:
type: boolean
default: false
description: Indicate if the field could be sorted.
recordItemDTO:
title: Record Item
type: object
properties:
headers:
type: array
items:
$ref: '#/components/schemas/recordItemHeaderDTO'
example:
- id: material_name
name: Material name
type: string
format: ''
unit: ''
aggregation: 'false'
filterable: 'true'
sortable: 'true'
- id: material_number
name: Material number
type: string
format: ''
unit: ''
aggregation: 'false'
filterable: 'true'
sortable: 'true'
- id: material_group
name: Material group
type: string
format: ''
unit: ''
aggregation: 'false'
filterable: 'true'
sortable: 'true'
data:
type: array
description: List of record item, compound with name and value
items:
additionalProperties: {}
example:
- material_name: PC Installation / Configuration
material_number: I-1000
material_group: Services
KmPaginationProjection:
type: object
properties:
pageNumber:
minimum: 0
type: integer
description: Page number of the result, starting by 0 (first page).
format: int32
default: 0
pageSize:
minimum: 1
type: integer
description: Page size of the result, the number of items returned in a page.
format: int32
default: 50
description: Projection of pagination parameters to be used, expressed as a page number and a page size.
responses:
InternalError:
description: Internal Server Error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
Forbidden:
description: Forbidden.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
ServiceUnavailable:
description: Service Unavailable.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
NotFound:
description: The specified resource was not found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
TooManyRequests:
description: Too Many Requests.
headers:
X-RateLimit-Limit:
description: Request limit per hour.
schema:
type: integer
format: int32
X-RateLimit-Remaining:
description: The number of requests left for the time window.
schema:
type: integer
format: int32
X-RateLimit-Reset:
description: The UTC date/time at which the current rate limit window resets.
schema:
type: string
format: date-time
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
BadRequest:
description: Bad Request.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/errorDTO'
Unauthorized:
description: Unauthorized access.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/authErrorDTO'
parameters:
sortParamKm:
style: form
explode: false
in: query
name: sort
required: false
description: 'Defines the order in which results are returned (Knowledge Model–level GET).
The `sortParamKm` query parameter must be a comma-separated list of record fields and/or KPIs.
Any value used in `sortParamKm` **must also be included** in the `fields` or `kpis` parameters.
If a value appears in `sortParamKm` but is **not** included in `fields` or `kpis`, the API cannot evaluate it and sorting will not be applied correctly.
If a non-existing field is provided, the request will return an error.
Sort direction is specified using optional prefixes:
- `+` for ascending order (ASC)
- `-` for descending order (DESC)
- No prefix defaults to ascending order (ASC)
**Examples**
- `sortParamKm=+record1_id.field1` (sorting in ascending order by a record field)
- `sortParamKm=-record1_id.field2,kpi1` (sorting in descending order by a record field and in ascending order by a KPI)
- `sortParamKm=record1_id.field1,-kpi2` (sorting in ascending order by a record field and in descending order by a KPI)
- `sortParamKm=-kpi1` (sorting in descending order by a KPI)'
schema:
type: array
items:
type: string
example: +record1_id.field1,-record1_id.field2,kpi1
searchField:
in: query
name: searchField
required: false
schema:
type: string
description: The specific field within the data structure that is targeted by the search.
searchTerm:
in: query
name: searchTerm
required: false
schema:
type: string
description: The term to search for. The search will attempt to find matches that are similar to this term.
fieldsOptionalParam:
style: form
explode: false
in: query
name: fields
required: false
allowEmptyValue: false
schema:
type: array
items:
type: string
description: A predefined filter id
example: active,approval
options:
style: form
explode: false
in: query
name: options
required: false
description: "Set different **options to customize the data results** for a query. Supported options \n* **Distinct**: Enable the unique data results for a query\n"
schema:
type: array
items:
type: string
example: distinct
sortParamRecord:
style: form
explode: false
in: query
name: sort
required: false
description: 'Defines the order in which results are returned (record-level GET).
The `sortParamRecord` query parameter must be a comma-separated list of record fields.
Any value used in `sortParamRecord` **must also be included** in the `fields` parameter.
If a value appears in `sortParamRecord` but is **not** included in `fields`, the API cannot evaluate it and sorting will not be applied correctly.
If a non-existing field is provided, the request will return an error.
Sort direction is specified using optional prefixes:
- `+` for ascending order (ASC)
- `-` for descending order (DESC)
- No prefix defaults to ascending order (ASC)
**Examples**
- `sortParamRecord=+field1` (sorting in ascending order by a record field)
- `sortParamRecord=-field2,field1` (sorting in descending order by a record field and in ascending order by another record field)'
schema:
type: array
items:
type: string
example: +field1,-field2,field3
pageParam:
in: query
name: page
required: false
schema:
type: integer
minimum: 0
default: 0
description: The page number of the result, starting by 0 (first page)
searchPrecision:
in: query
name: searchPrecision
required: false
schema:
type: integer
minimum: 1
maximum: 100
description: The strictness of the fuzzy matching algorithm. A lower value will return less accurate matches (more 'fuzzy').
pageSizeParam:
in: query
name: pageSize
required: false
schema:
type: integer
minimum: 1
default: 50
description: The number of items returned in a page.
kpisParam:
style: form
explode: false
in: query
name: kpis
required: false
schema:
type: array
items:
type: string
description: As many kpi ids if they exists in the knowledge model
example: AVG_EVENTS_PER_CASE,FILTERED_COUNT
filtersParam:
style: form
explode: false
in: query
name: filters
required: false
schema:
type: array
items:
type: string
description: A predefined filter id
example: active_incidents,cel_and_kpi
filterExprParam:
style: form
explode: true
in: query
name: filterExpr
required: false
schema:
type: array
items:
type: string
description: Dynamic filter expressions
example: active eq true and name not eq 'John Doe'
fieldsParam:
style: form
explode: false
in: query
name: fields
required: true
allowEmptyValue: false
schema:
type: array
items:
type: string
description: A predefined filter id
example: active,approval
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
ApiKeyAuth:
type: apiKey
in: header
name: AppKey