Edge Impulse DSP API
The DSP API from Edge Impulse — 18 operation(s) for dsp.
The DSP API from Edge Impulse — 18 operation(s) for dsp.
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/edge-impulse-dsp-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: Edge Impulse DSP API
version: 1.0.0
servers:
- url: https://studio.edgeimpulse.com/v1
security:
- ApiKeyAuthentication: []
- JWTAuthentication: []
- JWTHttpHeaderAuthentication: []
tags:
- name: DSP
paths:
/api/{projectId}/dsp/{dspId}:
get:
summary: Get config
description: Retrieve the configuration parameters for the DSP block. Use the impulse functions to retrieve all DSP blocks.
operationId: getDspConfig
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DSPConfigResponse'
post:
summary: Set config
description: Set configuration parameters for the DSP block. Only values set in the body will be overwritten.
operationId: setDspConfig
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DSPConfigRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/dsp/{dspId}/clear:
post:
summary: Clear DSP block
description: Clear generated features for a DSP block (used in tests).
operationId: clearDspBlock
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/dsp/{dspId}/metadata:
get:
summary: Get metadata
description: Retrieve the metadata from a generated DSP block.
operationId: getDspMetadata
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/ExcludeIncludedSamplesParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DSPMetadataResponse'
/api/{projectId}/dsp/{dspId}/raw-data/{sampleId}:
get:
summary: Get raw sample
description: Get raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out. If you pass dspId = 0 this will return a raw graph without any processing.
operationId: getDspRawSample
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/SampleIdParameter'
- $ref: '#/components/parameters/LimitPayloadValues'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetSampleResponse'
/api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice:
get:
summary: Get raw sample (slice)
description: Get slice of raw sample data, but with only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
operationId: getDspSampleSlice
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/SampleIdParameter'
- $ref: '#/components/parameters/SliceStartParameter'
- $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetSampleResponse'
/api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice/run:
post:
summary: Get processed sample (slice)
description: Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
operationId: runDspSampleSlice
tags:
- DSP
x-middleware:
- CustomResponse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/SampleIdParameter'
- $ref: '#/components/parameters/SliceStartParameter'
- $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunRequestWithoutFeatures'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunResponseWithSample'
/api/{projectId}/dsp/{dspId}/raw-data/{sampleId}/slice/run/readonly:
get:
summary: Get processed sample (slice)
description: Get slice of sample data, and run it through the DSP block. This only the axes selected by the DSP block. E.g. if you have selected only accX and accY as inputs for the DSP block, but the raw sample also contains accZ, accZ is filtered out.
operationId: runDspSampleSliceReadOnly
tags:
- DSP
x-middleware:
- AllowsReadOnly
- CustomResponse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/SampleIdParameter'
- $ref: '#/components/parameters/SliceStartParameter'
- $ref: '#/components/parameters/OptionalSliceEndDefaultToWindowLengthParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunResponseWithSample'
/api/{projectId}/dsp/{dspId}/features/labels:
get:
summary: Feature labels
description: Retrieve the names of the features the DSP block generates
operationId: getDspFeatureLabels
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspFeatureLabelsResponse'
/api/{projectId}/dsp/{dspId}/features/get-graph/{category}:
get:
summary: Sample of trained features
description: Get a sample of trained features, this extracts a number of samples and their labels. Used to visualize the current training set.
operationId: dspSampleTrainedFeatures
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/FeatureAx1Parameter'
- $ref: '#/components/parameters/FeatureAx2Parameter'
- $ref: '#/components/parameters/FeatureAx3Parameter'
- $ref: '#/components/parameters/RawDataCategoryParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspTrainedFeaturesResponse'
/api/{projectId}/dsp/{dspId}/features/get-graph/classification/{sampleId}:
get:
summary: Features for sample
description: Runs the DSP block against a sample. This will move the sliding window (dependent on the sliding window length and the sliding window increase parameters in the impulse) over the complete file, and run the DSP function for every window that is extracted.
operationId: dspGetFeaturesForSample
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/SampleIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspSampleFeaturesResponse'
/api/{projectId}/dsp/{dspId}/features/importance:
get:
summary: Feature importance
description: Retrieve the feature importance for a DSP block (only available for blocks where dimensionalityReduction is not enabled)
operationId: getDspFeatureImportance
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspFeatureImportanceResponse'
/api/{projectId}/dsp-data/{dspId}/x/{category}:
get:
summary: Download DSP data
description: Download output from a DSP block over all data in the training set, already sliced in windows. In Numpy binary format.
operationId: downloadDspData
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/RawDataCategoryParameter'
- $ref: '#/components/parameters/DSPDataRawParameter'
responses:
'200':
description: Numpy binary file
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/dsp-data/{dspId}/y/{category}:
get:
summary: Download DSP labels
description: Download labels for a DSP block over all data in the training set, already sliced in windows.
operationId: downloadDspLabels
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/RawDataCategoryParameter'
responses:
'200':
description: Numpy binary file
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/dsp/{dspId}/get-autotuner-results:
get:
summary: Get results from DSP autotuner
description: Get a set of parameters, found as a result of running the DSP autotuner.
operationId: getAutotunerResults
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspAutotunerResults'
/api/{projectId}/dsp-data/{dspId}/artifact/{key}:
get:
summary: Download a DSP artifact
description: Download an artifact from a DSP block for debugging. This is an internal API.
x-internal-api: true
operationId: downloadDspArtifact
tags:
- DSP
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
- $ref: '#/components/parameters/DspArtifactKeyParameter'
responses:
'200':
description: Artifact binary file
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/dsp/{dspId}/profile:
post:
summary: Profile custom DSP block
description: Returns performance characteristics for a custom DSP block (needs `hasTfliteImplementation`). Updates are streamed over the websocket API (or can be retrieved through the /stdout endpoint). Use getProfileTfliteJobResult to get the results when the job is completed.
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
operationId: startProfileCustomDspBlock
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunRequestWithoutFeaturesReadOnly'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/StartJobResponse'
/api/{projectId}/dsp/{dspId}/performance:
get:
summary: Get DSP block performance for all latency devices
description: Get estimated performance (latency and RAM) for the DSP block, for all supported project latency devices.
operationId: getPerformanceAllVariants
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspPerformanceAllVariantsResponse'
/api/{projectId}/dsp/{dspId}/run:
post:
summary: Get processed sample (from features array)
description: Takes in a features array and runs it through the DSP block. This data should have the same frequency as set in the input block in your impulse.
operationId: runDspOnFeaturesArray
tags:
- DSP
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DspIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunRequestWithFeatures'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DspRunResponse'
components:
parameters:
DspArtifactKeyParameter:
name: key
in: path
required: true
description: DSP artifact file key
schema:
type: string
FeatureAx2Parameter:
name: featureAx2
in: query
required: true
description: Feature axis 2
schema:
type: integer
SliceStartParameter:
name: sliceStart
in: query
required: true
description: Begin index of the slice
schema:
type: integer
FeatureAx1Parameter:
name: featureAx1
in: query
required: true
description: Feature axis 1
schema:
type: integer
RawDataCategoryParameter:
name: category
in: path
required: true
description: Which of the three acquisition categories to download data from
schema:
type: string
enum:
- training
- testing
- anomaly
SampleIdParameter:
name: sampleId
in: path
required: true
description: Sample ID
schema:
type: integer
OptionalSliceEndDefaultToWindowLengthParameter:
name: sliceEnd
in: query
required: false
description: End index of the slice. If not given, the sample will be sliced to the same length as the impulse input block window length.
schema:
type: integer
DSPDataRawParameter:
name: raw
in: query
required: false
description: Whether to download raw data or processed data. Processed data is the default.
schema:
type: boolean
FeatureAx3Parameter:
name: featureAx3
in: query
required: true
description: Feature axis 3
schema:
type: integer
DspIdParameter:
name: dspId
in: path
required: true
description: DSP Block ID, use the impulse functions to retrieve the ID
schema:
type: integer
LimitPayloadValues:
name: limitPayloadValues
in: query
required: false
description: Limit the number of payload values in the response
schema:
type: integer
ProjectIdParameter:
name: projectId
in: path
required: true
description: Project ID
schema:
type: integer
ExcludeIncludedSamplesParameter:
name: excludeIncludedSamples
in: query
required: false
description: Whether to exclude 'includedSamples' in the response (as these can slow down requests significantly).
schema:
type: boolean
schemas:
Sample:
type: object
required:
- id
- filename
- signatureValidate
- created
- lastModified
- category
- coldstorageFilename
- label
- intervalMs
- frequency
- originalIntervalMs
- originalFrequency
- deviceType
- sensors
- valuesCount
- added
- boundingBoxes
- boundingBoxesType
- chartType
- isDisabled
- isProcessing
- processingError
- isCropped
- projectId
- sha256Hash
properties:
id:
type: integer
example: 2
filename:
type: string
example: idle01.d8Ae
signatureValidate:
type: boolean
description: Whether signature validation passed
example: true
signatureMethod:
type: string
example: HS256
signatureKey:
type: string
description: Either the shared key or the public key that was used to validate the sample
created:
type: string
format: date-time
description: Timestamp when the sample was created on device, or if no accurate time was known on device, the time that the file was processed by the ingestion service.
lastModified:
type: string
format: date-time
description: Timestamp when the sample was last modified.
category:
type: string
example: training
coldstorageFilename:
type: string
label:
type: string
example: healthy-machine
intervalMs:
type: number
description: Interval between two windows (1000 / frequency). If the data was resampled, then this lists the resampled interval.
example: 16
frequency:
type: number
description: Frequency of the sample. If the data was resampled, then this lists the resampled frequency.
example: 62.5
originalIntervalMs:
type: number
description: Interval between two windows (1000 / frequency) in the source data (before resampling).
example: 16
originalFrequency:
type: number
description: Frequency of the sample in the source data (before resampling).
example: 62.5
deviceName:
type: string
deviceType:
type: string
sensors:
type: array
items:
$ref: '#/components/schemas/Sensor'
valuesCount:
type: integer
description: Number of readings in this file
totalLengthMs:
type: number
description: Total length (in ms.) of this file
added:
type: string
format: date-time
description: Timestamp when the sample was added to the current acquisition bucket.
boundingBoxes:
type: array
items:
$ref: '#/components/schemas/BoundingBox'
boundingBoxesType:
type: string
enum:
- object_detection
- constrained_object_detection
chartType:
type: string
enum:
- chart
- image
- video
- table
thumbnailVideo:
type: string
thumbnailVideoFull:
type: string
isDisabled:
type: boolean
description: True if the current sample is excluded from use
isProcessing:
type: boolean
description: True if the current sample is still processing (e.g. for video)
processingJobId:
type: integer
description: Set when sample is processing and a job has picked up the request
processingError:
type: boolean
description: Set when processing this sample failed
processingErrorString:
type: string
description: Error (only set when processing this sample failed)
isCropped:
type: boolean
description: Whether the sample is cropped from another sample (and has crop start / end info)
metadata:
type: object
description: Sample free form associated metadata
additionalProperties:
type: string
projectId:
type: integer
description: Unique identifier of the project this sample belongs to
projectOwnerName:
type: string
description: Name of the owner of the project this sample belongs to
projectName:
type: string
description: Name of the project this sample belongs to
projectLabelingMethod:
type: string
description: What labeling flow the project this sample belongs to uses
enum:
- single_label
- object_detection
sha256Hash:
type: string
description: Data sample SHA 256 hash (including CBOR envelope if applicable)
structuredLabels:
type: array
items:
$ref: '#/components/schemas/StructuredLabel'
structuredLabelsList:
type: array
items:
type: string
createdBySyntheticDataJobId:
type: integer
description: If this sample was created by a synthetic data job, it's referenced here.
imageDimensions:
type: object
required:
- width
- height
properties:
width:
type: integer
height:
type: integer
DspRunRequestWithFeatures:
type: object
required:
- features
- params
- drawGraphs
- requestPerformance
properties:
features:
type: array
description: Array of features. If you have multiple axes the data should be interleaved (e.g. [ax0_val0, ax1_val0, ax2_val0, ax0_val1, ax1_val1, ax2_val1]).
items:
type: integer
params:
type: object
description: DSP parameters with values
example:
scale-axes: '10'
additionalProperties:
type:
- string
- 'null'
drawGraphs:
type: boolean
description: Whether to generate graphs (will take longer)
requestPerformance:
type: boolean
description: Whether to request performance info (will take longer unless cached)
DspFeatureImportanceResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- hasFeatureImportance
- labels
properties:
hasFeatureImportance:
type: boolean
labels:
type: object
additionalProperties:
type: object
required:
- features
properties:
features:
type: array
items:
type: object
required:
- axis
- importance
properties:
axis:
type: string
importance:
type: number
DspTrainedFeaturesResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- totalSampleCount
- data
- skipFirstFeatures
properties:
totalSampleCount:
type: integer
description: Total number of windows in the data set
data:
type: array
items:
type: object
required:
- X
- y
- yLabel
properties:
X:
type: object
description: Data by feature index for this window
example: '`{ 0: 9.81, 11: 0.32, 22: 0.79 }`'
additionalProperties:
type: number
y:
type: integer
description: Training label index
yLabel:
type: string
description: Training label string
sample:
type: object
required:
- id
- name
- startMs
- endMs
properties:
id:
type: number
name:
type: string
startMs:
type: number
endMs:
type: number
skipFirstFeatures:
type: integer
description: When showing the processed features, skip the first X features. This is used in dimensionality reduction where artificial features are introduced in the response (on the first few positions).
DSPMetadataResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- $ref: '#/components/schemas/DSPMetadata'
DspFeatureLabelsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- labels
properties:
labels:
type: array
example: '`[ "accX RMS", "accX Peak 1 Freq" ]`'
items:
type: string
DSPMetadata:
type: object
required:
- created
- dspConfig
- labels
- featureCount
- windowCount
- includedSamples
- windowSizeMs
- windowIncreaseMs
- padZeros
- frequency
- outputConfig
properties:
created:
type: string
format: date-time
description: Date when the features were created
dspConfig:
type: object
additionalProperties:
type: string
labels:
type: array
description: Labels in the dataset when generator ran
items:
type: string
featureLabels:
type: array
description: Names of the generated features. Only set if axes have explicit labels.
items:
type: string
windowCount:
type: integer
featureCount:
type: integer
description: Number of features for this DSP block
includedSamples:
type: array
description: The included samples in this DSP block. Note that these are sorted in the same way as the `npy` files are laid out. So with the `windowCount` parameter you can exactly search back to see which file contributed to which windows there.
items:
type: object
required:
- id
- windowCount
properties:
id:
type: integer
windowCount:
type: integer
windowSizeMs:
type: integer
description: Length of the sliding window when generating features.
windowIncreaseMs:
type: integer
description: Increase of the sliding window when generating features.
padZeros:
type: boolean
description: Whether data was zero-padded when generating features.
frequency:
type: number
description: Frequency of the original data in Hz.
outputConfig:
type: object
description: Information about the output of the DSP block
required:
- type
- shape
properties:
type:
type: string
description: Output type of the DSP block
enum:
- image
- spectrogram
- flat
shape:
type: object
description: The shape of the block output
required:
- width
properties:
width:
description: Available on all types. Denotes the width of an 'image' or 'spectrogram', or the number of features in a 'flat' block.
type: integer
height:
description: Only available for type 'image' and 'spectrogram'
type: integer
channels:
description: Only available for type 'image'
type: integer
frames:
description: Number of frames, only available for type 'image'
type: integer
fftUsed:
type: array
items:
type: integer
resamplingAlgorithmVersion:
type: number
description: The version number of the resampling algorithm used (for resampled time series data only)
DSPGroup:
type: object
required:
- group
- items
properties:
group:
type: string
example: Scaling
items:
type: array
items:
$ref: '#/components/schemas/DSPGroupItem'
DspRunResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- features
- graphs
properties:
features:
type: array
description: Array of processed features. Laid out according to the names in 'labels'
items:
type: number
graphs:
type: array
description: Graphs to plot to give an insight in how the DSP process ran
items:
$ref: '#/components/schemas/DspRunGraph'
labels:
type: array
description: Labels of the feature axes
items:
type: string
state_string:
type: string
description: String representation of the DSP state returned
performance:
$ref: '#/components/schemas/DspPerformance'
DSPConfigRequest:
type: object
required:
- config
properties:
config:
type: object
additionalProperties:
type: string
DSPGroupItem:
type: object
required:
- name
- type
- param
- defaultValue
- readonly
- shouldShow
- required
properties:
name:
type: string
example: Scale axes
value:
type: string
defaultValue:
type: string
type:
type: string
example: text
help:
type: string
example: Divide axes by this number
param:
type: string
example: scale-axes
selectOptions:
type: array
items:
type: object
properties:
value:
type: string
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-dsp-api-openapi.yml