How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Cognite Records API

Records are mutable or immutable data objects (depending on the stream template) stored in a stream. Records are created by ingesting data into a stream.Records are shaped similarly to instances in the Data Modeling service, and their schema is defined by the containers referenced as sources.Each record is associated with a space. Space-based access control applies to records.This section specifies the `records` resource and uses the following Data Modeling concepts: - [Spaces](https://docs.cognite.com/cdf/dm/dm_concepts/dm_spaces_instances#space) - [Containers](https://docs.cognite.com/cdf/dm/dm_concepts/dm_containers_views_datamodels#containers)**Note:** Every `record` has a required top-level `externalId` property, which can be usedin some queries to retrieve or aggregate records (for filtering or sorting).For mutable records, `externalId` (together with `space`) uniquely identifies a record for write operations (create, upsert, delete).For immutable records, the records API does not enforce uniqueness of the `space` + `externalId` pair, so multiple records may share the same identifier.## Rate and concurrency limitsBoth the rate of requests (denoted as requests per second, or ‘**rps**’) and the number of concurrent (parallel)requests are governed by limits for all CDF API endpoints. If a request exceeds a limit,it will be throttled with a `429: Too Many Requests` response. See [Resource throttling](https://docs.cognite.com/dev/concepts/resource_throttling) for limit types and how to avoid throttling.Limits apply to the API endpoints for this service.Some request types consume more resources (compute, storage I/O) than others. For example, ingest requestsare less resource-intensive than analytical requests (Aggregate, Retrieve).Limits for query endpoints (Sync, Retrieve, Aggregate) are hierarchical:- All query endpoints share a common **Query request budget** (shown in the tables below)- The Retrieve endpoint has an **additional** dedicated budget that is checked first- The Aggregate endpoint has an **additional** dedicated budget that is checked firstThe Sync endpoint only checks the Query request budget. The Retrieve and Aggregate endpointsmust pass both their dedicated budget check AND the Query request budget check.For example, with mutable streams you can make up to 40 rps total across all query endpoints(Query budget limit), but only up to 20 of those can be Retrieve requests (Retrieve budget limit)and only up to 15 can be Aggregate requests (Aggregate budget limit).That means you could send 20 Retrieve + 15 Aggregate + 5 Sync = 40 total RPS.Query performance and rate limits vary between mutable and immutable streams because oftheir different storage characteristics.Mutable streams provide consistent high-performance queries and higher rate limits(see "mutable streams" limits in the tables below).Immutable streams are optimized for ingesting very large amounts of data,which results in lower query performance and stricter rate limits than mutable streams(see "immutable streams" limits in the tables below).When designing data access patterns, use mutable streams for high-performance queries and higher rate limits, or immutable streams when the priorityis high-volume ingestion and long-term storage.The amount of data returned in responses from query endpoints (Sync, Retrieve, Aggregate)is also limited. Prefer reading only the data you need: use an appropriate `filter` and limit which `sources` are retrieved, rather thanretrieving large result sets that you will not use.The version limits for the records endpoints are shown in the tables below.These limits are subject to change, pending review of consumption patterns and resource availability over time: Ingest request budget Overall Per ID Requests per second 40 30 Concurrent requests 20 15 Query request budget Overall Per ID Requests per second: mutable streams 40 30 Concurrent requests: mutable streams 30 22 Requests per second: immutable streams 10 7 Concurrent requests: immutable streams 10 7 Response MB per second 4 3 Additional dedicated budgets for Retrieve and Aggregate endpoints: The Retrieve and Aggregate endpoints have dedicated budgets that are checked in addition to the Query request budget shown above. A request to these endpoints must pass both budget checks. Retrieve request budget Overall Per ID Requests per second: mutable streams 20 15 Concurrent requests: mutable streams 20 15 Requests per second: immutable streams 10 7 Concurrent requests: immutable streams 10 7 Note: Retrieve endpoint requests are checked against both this budget and the Query request budget above. Aggregate request budget Overall Per ID Requests per second: mutable streams 15 12 Concurrent requests: mutable streams 10 7 Requests per second: immutable streams 5 4 Concurrent requests: immutable streams 5 4 Note: Aggregate endpoint requests are checked against both this budget and the Query request budget above. Summary: Sync endpoint: Only limited by Query request budget Retrieve endpoint: Limited by Retrieve request budget AND Query request budget Aggregate endpoint: Limited by Aggregate request budget AND Query request budget

Cognite Records API is one of 90 APIs that Cognite publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Records. The published artifact set on APIs.io includes an OpenAPI specification.

This API exposes 6 operations across 6 paths, and defines 92 schemas. It is described by OpenAPI 3.2.0, at version v1.

Requests are made against a single base URL, https://{cluster}.cognitedata.com/api/v1/projects/{project}.

6 operations 6 paths 92 schemas 6 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.2.0
API Version
v1
Base URL
https://api.cognitedata.com
Authentication
HTTP Bearer, OAuth 2.0, OAuth 2.0, OAuth 2.0, OpenID Connect
Resource Areas
1

Authentication & Security 5

Cognite Records API declares 5 security schemes for authenticating requests. It accepts HTTP bearer tokens (OpenID Connect or OAuth2 token) (oidc-token). It supports OAuth 2.0 (oauth2-client-credentials) using the clientCredentials flow, exposing 1 scope. It supports OAuth 2.0 (oauth2-auth-code) using the authorizationCode flow, exposing 1 scope. It supports OAuth 2.0 (oauth2-open-industrial-data) using the clientCredentials flow, exposing 1 scope. It supports OpenID Connect (org-oidc-token) discovered at https://auth.cognite.com/.well-known/openid-configuration. By default, every request must be authenticated.

  • oidc-token — Access token issued by the CDF project's configured identity provider. Access token must be an OpenID Connect token, and the project must be configured to acce…
  • oauth2-client-credentials — Access token issued by the CDF project's configured identity provider. Access token must be an OpenID Connect token, and the project must be configured to acce…
  • oauth2-auth-code — Access token issued by the CDF project's configured identity provider. Access token must be an OpenID Connect token, and the project must be configured to acce…
  • oauth2-open-industrial-data — Auth flow for Open Industrial Data. Get your client secret from https://hub.cognite.com/open-industrial-data-211.
  • org-oidc-token — Access token issued by the Cognite authorization server, and valid for the target organization. The token must be an OpenID Connect token, and it can be obtain…

Paths & Operations 6

Across 6 paths, the API surfaces 6 operations — 6 POST. Each is listed below with its method, path, parameters, and response codes.

Records 6

Records are mutable or immutable data objects (depending on the stream template) stored in a stream. Records are created by ingesting data into a stream. Records are shaped simila…

POST
/streams/{streamId}/records
Ingest records into a stream
ingestRecords 1 param body → 202400409422500503
POST
/streams/{streamId}/records/upsert
Upsert (create or update) records into a stream
upsertRecords 1 param body → 202400409422500503
POST
/streams/{streamId}/records/delete
Delete records from a stream
deleteRecords 1 param body → 200400422500503
POST
/streams/{streamId}/records/filter
Retrieve records from a stream
filterRecords 1 param body → 200400
POST
/streams/{streamId}/records/aggregate
Aggregate records data from a stream
aggregateRecords 1 param body → 200400
POST
/streams/{streamId}/records/sync
Sync records from a stream
syncRecords 1 param body → 200400

Schemas 92

The contract defines 92 schemas that model the data the API accepts and returns. The most detailed are SyncRecord (6 properties), RecordEnumPropertyType (5 properties), Record (5 properties), RecordContainerPropertyDefinition (5 properties). Each schema is shown below with its type and property counts.

MinAggregateResultIla
object
1 property 1 required
RecordSpace
Id of the space that the record belongs to.
Record
object
Record item.
5 properties 5 required
PropertySort
object
Sorting spec for a property.
2 properties 1 required
SortPropertyIla
Property a client wants to sort on. To represent fully qualified properties, Records use arrays of strings. The Records sorting supports both container and top…
BasePropertyIla
array
MovingFunctionAggregateResultIla
object
1 property 1 required
RangeFilterIla
object
1 property 1 required
LastUpdatedTimeFilter
object
Matches records with the last updated time within the provided range. This attribute is mandatory for immutable streams but it's optional for mutable streams.…
4 properties
PropertySpecificTargetUnit
object
Property and unit or unit system to convert this proeprty to.
2 properties 2 required
RecordTextPropertyType
object
Primitive property type.
4 properties 2 required
ContainsAllFilterIla
object
1 property 1 required
MaxAggregateIla
object
1 property 1 required
TargetUnitProperty
Property to convert to the target unit or unit system. To represent fully qualified properties, Records use arrays of strings. Target units support only contai…
TimeHistogramAggregateIla
object
1 property 1 required
UniqueValuesAggregateResultIla
object
1 property
FiltersAggregateIla
object
1 property 1 required
FilterDefinitionIla
object
A filter Domain Specific Language (DSL) used to create advanced filter queries. Note: the max number of nodes in the filter tree is 100 and the max tree depth…
ExistsFilterIla
object
1 property 1 required
RecordSpaceTypeInformation
object
Spaces
SumAggregateIla
object
1 property 1 required
EpochTimestamp
integer
The number of milliseconds since 00:00:00 Thursday, 1 January 1970, Coordinated Universal Time (UTC), minus leap seconds.
EqualsFilterIla
object
1 property 1 required
RecordPropertyTypeDefinition
Properties of a container.
SumAggregateResultIla
object
1 property 1 required
AggregateValue
NumberHistogramAggregateResultIla
object
1 property
ContainerReferenceIla
object
Reference to a container.
UnprocessableRecords
object
1 property 1 required
UniqueValuesAggregateIla
object
1 property 1 required
SyncRecordsRequest
AggregatesResultDefinitionIla
object
A dictionary of the results for the requested aggregates mapped by the aggregates identifiers. Example: { "myaggr1": { "avg": 42 }, "myaggr2": { "max": 69 }, }
AvgAggregateResultIla
object
1 property 1 required
RecordExternalId
string
The identifier (in scope of a space) of a record which is stored in a stream. Note: For mutable records, the property value must be unique within the scope of…
MaxAggregateResultIla
object
1 property 1 required
UniqueValuesAggregatePropertyIla
Property a client wants to aggregate. To represent fully qualified properties, Records use arrays of strings. The aggregate supports container level properties…
SyncRecord
object
Sync record item.
6 properties 5 required
LeafFilterIla
object
Leaf filter which is used in boolean filters to build advanced queries to filter out some records.
PrefixFilterIla
object
1 property 1 required
BoolFilterIla
object
Build a new query by combining other queries, using boolean operators. We support the and, or, and not boolean operators.
MovingFunctionAggregateIla
object
1 property 1 required
RawPropertyValueListIla
array
A list of values describing the type of the defined property
MinMaxAggregatePropertyIla
Property a client wants to aggregate. To represent fully qualified properties, Records use arrays of strings. The aggregate supports container level properties…
FilterRecordsRequest
DeleteRecordsRequest
object
1 property 1 required
RawPropertyValueV3
A value matching the data type of the defined property
RecordOperationResult
object
Result of processing an individual record from the request
4 properties 3 required
AggregatesDefinitionIla
object
AggregatePropertyIla
Property a client wants to aggregate. To represent fully qualified properties, Records use arrays of strings. The aggregate supports only container level prope…
ContainerWithData
object
Container holding properties.
RecordContainerPropertyDefinition
object
Type and configuration of a property.
5 properties 3 required
IngestRecordsRequest
object
1 property 1 required
CountAggregateIla
object
1 property 1 required
FilterPropertyNoTopLevelIla
Property a client wants to use in the filter. To represent fully qualified properties, Records use arrays of strings. The filter supports container level prope…
RecordContainerTypeInformation
object
Containers belonging to a space
TimeHistogramAggregateResultIla
object
1 property
MatchAllFilter
object
1 property 1 required
TimeHistogramAggregatePropertyIla
Property a client wants to aggregate. To represent fully qualified properties, Records use arrays of strings. The aggregate supports container level properties…
LastUpdatedTimeRangeValue
Timestamp value you wish to find in the record last updated time using a range clause.
RecordDelete
object
Record to delete.
2 properties 2 required
CountAggregateResultIla
object
1 property 1 required
FilterPropertyCreatedAndLastUpdatedTimeTopLevelIla
Property a client wants to use in the filter. To represent fully qualified properties, Records use arrays of strings. The filter supports container level prope…
AggregateRecordsRequest
Defines an aggregation request. This will let you aggregate supported data types. The request supports filters, and allows optional search matching.
ContainsAnyFilterIla
object
1 property 1 required
RecordEnumPropertyType
object
Enumeration property type. Values are stored and compared as case-sensitive strings. Only values declared in the values map are accepted on ingestion. If unkno…
5 properties 3 required
SourceSelector
array
List of containers and their properties which values should be selected for the response.
RecordData
object
Property values for the identified/specified container.
2 properties 2 required
LimitWithDefault10
object
1 property
RecordDirectRelationPropertyType
object
Direct node relation. Only the target space existence is validated for records. Target nodes are not auto-created.
4 properties 2 required
PropertyValueGroupV3
object
Group of property values indexed by a local unique identifier. The identifier has to have a length of between 1 and 255 characters. It must also match the patt…
ContainerReference
object
Reference to an existing container
3 properties 3 required
RecordIngest
object
Record to write.
3 properties 3 required
Sort
object
1 property
HasDataFilterIla
object
1 property 1 required
SpaceSpecification
string
DMSExternalId
string
RangeValue
Value you wish to find in the provided property using a range clause.
RecordPrimitivePropertyType
object
Primitive property types. We expect dates and timestamps to be ISO-8601 formatted strings (e.g. 2025-06-15T10:00:00Z, 2025-06-15T10:00:00.000Z, or 2025-06-15T1…
4 properties 2 required
InFilterIla
object
1 property 1 required
AvgAggregateIla
object
1 property 1 required
RecordUnitReference
object
1 property 1 required
RecordsPartialSuccessResponse
object
Contains generic description of the result as well as per record detailed results.
1 property 1 required
MinAggregateIla
object
1 property 1 required
RecordTargetUnits
object
1 property
FilterPropertySpaceAndExternalIdTopLevelIla
Property a client wants to use in the filter. To represent fully qualified properties, Records use arrays of strings. The filter supports container level prope…
RecordEnumValue
object
Metadata for a single enum value.
2 properties
RecordIncludeTyping
object
1 property
NumberHistogramAggregateIla
object
1 property 1 required
FiltersAggregateResultIla
object
1 property
FilterPropertyAllTopLevelIla
Property a client wants to use in the filter. To represent fully qualified properties, Records use arrays of strings. The filter supports container level prope…
Error
object
Cognite API error.
4 properties 2 required
RecordTypeInformation
object
Property type information. This attribute is present only if includeTyping was set to true in request.

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

cognite-records-api-openapi.yml Raw ↑

Other APIs Cognite publishes across the network.

Cognite Data Fusion API
Cognite 3D Asset Mapping API
Cognite 3D Files API
Cognite 3D Jobs API
Cognite 3D Model Revisions API
Cognite 3D Models API
Cognite Annotations API
Cognite Assets API
Cognite Connections API
Cognite Containers API
Cognite Data models API
Cognite Data point subscriptions API
Where this information came from

This is an independent, third-party profile of Cognite Records API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.