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.
openapi: 3.0.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:
SliceStartParameter:
name: sliceStart
in: query
required: true
description: Begin index of the slice
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
ProjectIdParameter:
name: projectId
in: path
required: true
description: Project ID
schema:
type: integer
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
FeatureAx2Parameter:
name: featureAx2
in: query
required: true
description: Feature axis 2
schema:
type: integer
LimitPayloadValues:
name: limitPayloadValues
in: query
required: false
description: Limit the number of payload values in the response
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
DspIdParameter:
name: dspId
in: path
required: true
description: DSP Block ID, use the impulse functions to retrieve the ID
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
FeatureAx1Parameter:
name: featureAx1
in: query
required: true
description: Feature axis 1
schema:
type: integer
DspArtifactKeyParameter:
name: key
in: path
required: true
description: DSP artifact file key
schema:
type: string
FeatureAx3Parameter:
name: featureAx3
in: query
required: true
description: Feature axis 3
schema:
type: integer
schemas:
StartJobResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- id
properties:
id:
type: integer
description: Job identifier. Status updates will include this identifier.
example: 12873488112
DSPConfigRequest:
type: object
required:
- config
properties:
config:
type: object
additionalProperties:
type: string
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
nullable: true
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
DspRunRequestWithoutFeatures:
type: object
required:
- params
- store
properties:
params:
type: object
description: DSP parameters with values
example:
scale-axes: '10'
additionalProperties:
type: string
nullable: true
store:
type: boolean
description: Whether to store the DSP parameters as the new default parameters.
DSPConfig:
type: object
required:
- dsp
properties:
dsp:
$ref: '#/components/schemas/DSPInfo'
config:
type: array
items:
$ref: '#/components/schemas/DSPGroup'
configError:
type: string
GetSampleResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- $ref: '#/components/schemas/RawSampleData'
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)
DspPerformanceAllVariantsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
properties:
performance:
type: array
description: List of performance estimates for each supported MCU.
items:
type: object
required:
- mcu
- latency
- ram
properties:
mcu:
type: string
latency:
type: integer
description: Latency estimate, in ms
ram:
type: integer
description: RAM estimate, in bytes
Sensor:
type: object
required:
- name
- units
properties:
name:
type: string
description: Name of the axis
example: accX
units:
type: string
description: Type of data on this axis. Needs to comply to SenML units (see https://www.iana.org/assignments/senml/senml.xhtml).
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'
DspRunResponseWithSample:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- features
- graphs
- sample
- canProfilePerformance
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
labelAtEndOfWindow:
description: Label for the window (only present for time-series data)
type: string
sample:
$ref: '#/components/schemas/RawSampleData'
performance:
$ref: '#/components/schemas/DspPerformance'
canProfilePerformance:
type: boolean
BoundingBox:
type: object
description: This has the _absolute values_ for x/y/w/h (so 0..x (where x is the w/h of the image))
required:
- label
- x
- y
- width
- height
properties:
label:
type: string
x:
type: integer
y:
type: integer
width:
type: integer
height:
type: integer
RawSampleData:
type: object
required:
- sample
- payload
- totalPayloadLength
properties:
sample:
$ref: '#/components/schemas/Sample'
payload:
$ref: '#/components/schemas/RawSamplePayload'
totalPayloadLength:
type: integer
description: Total number of payload values
DSPGroup:
type: object
required:
- group
- items
properties:
group:
type: string
example: Scaling
items:
type: array
items:
$ref: '#/components/schemas/DSPGroupItem'
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).
DspPerformance:
type: object
required:
- latency
- ram
properties:
latency:
type: integer
ram:
type: integer
customDspString:
type: string
description: If the project latencyDevice has custom DSP hardware, this value contains a device specific latency metric (eg. cycles)
DspFeatureLabelsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- labels
properties:
labels:
type: array
example: '`[ "accX RMS", "accX Peak 1 Freq" ]`'
items:
type: string
DSPMetadataResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- $ref: '#/components/schemas/DSPMetadata'
DspRunGraph:
type: object
required:
- name
- type
properties:
name:
type: string
description: Name of the graph
example: Frequency domain
image:
type: string
description: Base64 encoded image, only present if type is 'image'
imageMimeType:
type: string
description: Mime type of the Base64 encoded image, only present if type is 'image'
X:
type: object
description: Values on the x-axis per plot. Key is the name of the raw feature. Present if type is 'logarithmic' or 'linear'.
example:
accX:
- 3
- 5
- 7
accY:
- 2
- 1
- 5
additionalProperties:
type: array
items:
type: number
y:
type: array
description: Values of the y-axis. Present if type is 'logarithmic' or 'linear'.
example:
- 0
- 0.5
- 1
items:
type: number
suggestedXMin:
type: number
description: Suggested minimum value of x-axis
suggestedXMax:
type: number
description: Suggested maxium value of x-axis
suggestedYMin:
type: number
description: Suggested minimum value of y-axis
suggestedYMax:
type: number
description: Suggested maximum value of y-axis
type:
type: string
description: Type of graph (either `logarithm
# --- 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