Edge Impulse Impulse API
The Impulse API from Edge Impulse — 13 operation(s) for impulse.
The Impulse API from Edge Impulse — 13 operation(s) for impulse.
openapi: 3.0.0
info:
title: Edge Impulse API
version: 1.0.0
servers:
- url: https://studio.edgeimpulse.com/v1
security:
- ApiKeyAuthentication: []
- JWTAuthentication: []
- JWTHttpHeaderAuthentication: []
tags:
- name: Impulse
paths:
/api/{projectId}/impulse:
get:
summary: Get impulse
description: Retrieve the impulse for this project. If you specify `impulseId` then that impulse is returned, otherwise the default impulse is returned.
operationId: getImpulse
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetImpulseResponse'
post:
summary: Create impulse
description: Sets the impulse for this project. If you specify `impulseId` then that impulse is created/updated, otherwise the default impulse is created/updated.
operationId: createImpulse
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateImpulseRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateImpulseResponse'
delete:
summary: Delete impulse
description: Clears the impulse and all associated blocks for this project. If you specify `impulseId` then that impulse is cleared, otherwise the default impulse is cleared.
operationId: deleteImpulse
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/impulse/new:
post:
summary: Create new empty impulse
description: Create a new empty impulse, and return the ID.
operationId: createNewEmptyImpulse
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateNewEmptyImpulseResponse'
/api/{projectId}/impulse/update:
post:
summary: Update impulse
description: Update the impulse for this project. If you specify `impulseId` then that impulse is created/updated, otherwise the default impulse is created/updated.
operationId: updateImpulse
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateImpulseRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/impulse/all:
get:
summary: Get impulse including disabled blocks
description: Retrieve the impulse for this project including disabled blocks. If you specify `impulseId` then that impulse is returned, otherwise the default impulse is returned.
operationId: getImpulseAll
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetImpulseResponse'
/api/{projectId}/impulse/get-new-block-id:
post:
summary: Get new block ID
description: Returns an unused block ID. Use this function to determine new block IDs when you construct an impulse; so you won't accidentally re-use block IDs.
operationId: getNewBlockId
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetNewBlockIdResponse'
/api/{projectId}/impulse/blocks:
get:
summary: Get impulse blocks
description: Lists all possible blocks that can be used in the impulse
operationId: getImpulseBlocks
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetImpulseBlocksResponse'
/api/{projectId}/verify-dsp-block/url:
post:
summary: Verify custom DSP block
description: Verify the validity of a custom DSP block
operationId: verifyDspBlockUrl
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyDspBlockUrlRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyDspBlockUrlResponse'
/api/{projectId}/impulses:
get:
summary: Get all impulses
description: Retrieve all impulse for a project
operationId: getAllImpulses
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllImpulsesResponse'
/api/{projectId}/impulses-detailed:
get:
summary: Get all impulses (incl. metrics)
description: Retrieve all impulse for a project, including accuracy and performance metrics.
operationId: getAllDetailedImpulses
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAllDetailedImpulsesResponse'
/api/{projectId}/download-impulses-detailed:
get:
summary: Download all impulses (incl. metrics), as JSON or CSV.
description: Download all impulse for a project, including accuracy and performance metrics, as JSON or CSV.
operationId: downloadDetailedImpulses
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/DetailedImpulsesFormatParameter'
responses:
'200':
description: File
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/impulse/legacy-set-impulse:
post:
summary: Set legacy impulse
description: Set the complete impulse state for a project, writing impulses in the old (pre-impulse experiments) format. This completely clears out all files on FSx for this project. This is an internal API.
x-internal-api: true
security:
- permissions:
- projects:training:keras:write
operationId: setLegacyImpulseStateInternal
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/SetLegacyImpulseStateInternalRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/impulse/{impulseId}/clone/structure:
post:
summary: Clone impulse (structure)
description: Clones the complete structure (incl. config) of an impulse. Does not copy data.
operationId: cloneImpulseStructure
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ImpulseIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CloneImpulseRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateImpulseResponse'
/api/{projectId}/impulse/{impulseId}/clone/complete:
post:
summary: Clone impulse (complete)
description: Clones the complete impulse (incl. config and data) of an existing impulse.
operationId: cloneImpulseComplete
tags:
- Impulse
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ImpulseIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CloneImpulseRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/StartJobResponse'
components:
schemas:
VerifyDspBlockUrlRequest:
type: object
required:
- url
properties:
url:
type: string
BlockDisplayCategory:
description: Category to display this block in the UI.
type: string
enum:
- classical
- tao
KerasModelVariantEnum:
type: string
enum:
- int8
- float32
- akida
AnomalyGmmMetadata:
type: object
required:
- means
- covariances
- weights
properties:
means:
type: array
items:
type: array
items:
type: number
description: 2D array of shape (n, m)
covariances:
type: array
items:
type: array
items:
type: array
items:
type: number
description: 3D array of shape (n, m, m)
weights:
type: array
items:
type: number
description: 1D array of shape (n,)
BlockType:
type: string
enum:
- official
- personal
- enterprise
- pro-or-enterprise
- community
LearnBlock:
type: object
required:
- type
- title
- author
- description
- name
- recommend
- blockType
properties:
type:
type: string
example: spectral-analysis
title:
type: string
example: Spectral features
author:
type: string
example: Edge Impulse Inc.
description:
type: string
name:
type: string
example: Spectral analysis
recommended:
type: boolean
organizationModelId:
type: integer
publicProjectTierAvailability:
$ref: '#/components/schemas/PublicProjectTierAvailability'
isPublicEnterpriseOnly:
type: boolean
description: Whether this block is publicly available to only enterprise users
blockType:
$ref: '#/components/schemas/BlockType'
displayCategory:
$ref: '#/components/schemas/BlockDisplayCategory'
SetLegacyImpulseStateInternalRequest:
type: object
required:
- zip
- impulse
- config
properties:
zip:
type: string
format: binary
impulse:
type: string
format: binary
config:
type: string
format: binary
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
ImpulseInputBlock:
type: object
required:
- id
- type
- name
- title
- primaryVersion
properties:
id:
type: integer
minimum: 1
description: Identifier for this block. Make sure to up this number when creating a new block, and don't re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and greather than zero (>0).
type:
type: string
description: Block type (either time-series, image or features)
example: time-series
enum:
- time-series
- image
- features
name:
type: string
description: Block name, will be used in menus
example: Time series
title:
type: string
description: Block title, used in the impulse UI
example: Time series
windowSizeMs:
type: integer
description: Size of the sliding window in milliseconds
example: 2004
windowIncreaseMs:
type: integer
description: We use a sliding window to go over the raw data. How many milliseconds to increase the sliding window with for each step.
frequencyHz:
type: number
description: (Input only) Frequency of the input data in Hz
example: 60
classificationWindowIncreaseMs:
type: integer
description: We use a sliding window to go over the raw data. How many milliseconds to increase the sliding window with for each step in classification mode.
padZeros:
type: boolean
description: Whether to zero pad data when a data item is too short
imageWidth:
type: integer
description: Width all images are resized to before training
example: 28
imageHeight:
type: integer
description: Width all images are resized to before training
example: 28
resizeMode:
type: string
description: How to resize images before training
example: squash
enum:
- squash
- fit-short
- fit-long
- crop
resizeMethod:
type: string
description: Resize method to use when resizing images
example: squash
enum:
- lanczos3
- nearest
cropAnchor:
type: string
description: If images are resized using a crop, choose where to anchor the crop
example: middle-center
enum:
- top-left
- top-center
- top-right
- middle-left
- middle-center
- middle-right
- bottom-left
- bottom-center
- bottom-right
description:
type: string
description: A short description of the block version, displayed in the block versioning UI
example: Reduced learning rate and more layers
createdBy:
type: string
description: The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
example: createImpulse
createdAt:
type: string
format: date-time
description: The datetime that the block version was created. Cannot be set via API.
datasetSubset:
type: object
description: Only generate features for samples where (sample_id + datasetSubsetSeed) % datasetSubset) == 0
required:
- datasetSubset
- datasetSubsetSeed
properties:
subsetModulo:
type: number
subsetSeed:
type: number
DetailedImpulse:
type: object
required:
- impulse
- metrics
- dspBlockConfigs
- learnBlockKerasConfigs
- learnBlockAnomalyConfigs
- isStale
- tags
properties:
impulse:
$ref: '#/components/schemas/Impulse'
metrics:
type: array
items:
$ref: '#/components/schemas/DetailedImpulseMetric'
dspBlockConfigs:
type: array
items:
type: object
required:
- blockId
- config
properties:
blockId:
type: integer
config:
description: This returns a DSPConfig object, but "dsp.classes" and "dsp.features.classes" will be set to an empty array (use getDspConfig to retrieve these).
$ref: '#/components/schemas/DSPConfig'
metadata:
description: This returns a DSPMetadata object, but "labels" will be set to an empty array (use getDspMetadata to retrieve these).
$ref: '#/components/schemas/DSPMetadata'
learnBlockKerasConfigs:
items:
type: object
required:
- blockId
- config
properties:
blockId:
type: integer
config:
description: This returns a KerasConfig object, but "transferLearningModels" and "dependencies.classes" will be set to an empty array (use getKeras to retrieve these).
$ref: '#/components/schemas/KerasConfig'
metadata:
description: This returns a KerasModelMetadata object, but 1) non-default "onDevicePerformance", 2) "predictions", 3) "labels"; are omitted (use getKerasMetadata to retrieve these).
$ref: '#/components/schemas/KerasModelMetadata'
learnBlockAnomalyConfigs:
items:
type: object
required:
- blockId
- config
properties:
blockId:
type: integer
config:
$ref: '#/components/schemas/AnomalyConfig'
metadata:
description: This returns a AnomalyModelMetadata object, but 1) non-default "onDevicePerformance", 2) "predictions" are omitted (use getAnomalyMetadata to retrieve these).
$ref: '#/components/schemas/AnomalyModelMetadata'
gmmMetadata:
$ref: '#/components/schemas/AnomalyGmmMetadata'
pretrainedModelInfo:
type: object
required:
- fileName
properties:
fileName:
type: string
isStale:
type: boolean
description: Whether this impulse contains blocks with "stale" features (i.e. the dataset has changed since features were generated)
tags:
type: array
items:
type: string
description: Tags associated with this impulse
createdFromTunerTrialId:
type: number
description: The source EON Tuner trial ID for impulses created from the EON Tuner
AnomalyConfig:
type: object
required:
- name
- axes
- trained
- dependencies
- selectedAxes
- minimumConfidenceRating
properties:
dependencies:
$ref: '#/components/schemas/DependencyData'
name:
type: string
axes:
type: array
description: Selectable axes for the anomaly detection block
items:
type: object
required:
- label
- selected
- favourite
properties:
label:
type: string
selected:
type: boolean
favourite:
type: boolean
trained:
type: boolean
description: Whether the block is trained
clusterCount:
type: integer
description: Number of clusters for K-means, or number of components for GMM (in config)
selectedAxes:
type: array
items:
type: integer
description: Selected clusters (in config)
minimumConfidenceRating:
type: number
description: Minimum confidence rating for this block, scores above this number will be flagged as anomaly.
Impulse:
type: object
required:
- id
- name
- inputBlocks
- dspBlocks
- learnBlocks
properties:
id:
type: integer
description: ID for this impulse.
name:
type: string
description: Name for this impulse.
inputBlocks:
type: array
description: Input Blocks that are part of this impulse
items:
$ref: '#/components/schemas/ImpulseInputBlock'
dspBlocks:
type: array
description: DSP Blocks that are part of this impulse
items:
$ref: '#/components/schemas/ImpulseDspBlock'
learnBlocks:
type: array
description: Learning Blocks that are part of this impulse
items:
$ref: '#/components/schemas/ImpulseLearnBlock'
BlockParameters:
description: Training parameters specific to the type of the learn block. Parameters may be adjusted depending on the model defined in the visual layers. Used for our built-in blocks.
oneOf:
- $ref: '#/components/schemas/BlockParamsVisualAnomalyPatchcore'
- $ref: '#/components/schemas/BlockParamsVisualAnomalyGmm'
DetailedImpulseMetricCategory:
type: string
enum:
- impulseMetrics
- inputBlockConfig
- dspBlockConfig
- learnBlockConfig
- learnBlockMetrics
AnomalyCapacity:
type: string
description: Capacity level for visual anomaly detection. Determines which set of default configurations to use. The higher capacity, the higher number of (Gaussian) components, and the more adapted the model becomes to the original distribution
enum:
- low
- medium
- high
DSPConfig:
type: object
required:
- dsp
properties:
dsp:
$ref: '#/components/schemas/DSPInfo'
config:
type: array
items:
$ref: '#/components/schemas/DSPGroup'
configError:
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)
GetNewBlockIdResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- blockId
properties:
blockId:
type: integer
KerasCustomMetric:
type: object
required:
- name
- value
properties:
name:
description: The name of the metric
type: string
value:
description: The value of this metric for this model type
type: string
ImpulseDspBlock:
type: object
required:
- id
- type
- name
- axes
- title
- primaryVersion
- implementationVersion
properties:
id:
minimum: 1
type: integer
description: Identifier for this block. Make sure to up this number when creating a new block, and don't re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and greather than zero (>0).
type:
type: string
description: Block type
example: spectral-analysis
name:
type: string
description: Block name, will be used in menus
example: Spectral features
axes:
type: array
description: Input axes, identified by the name in the name of the axis
items:
type: string
example: accX
title:
type: string
description: Block title, used in the impulse UI
example: Spectral Analysis
valuesPerAxis:
type: integer
description: Number of features this DSP block outputs per axis. This is only set when the DSP block is configured.
example: 11
input:
type: integer
description: The ID of the Input block a DSP block is connected to
example: 1
description:
type: string
description: A short description of the block version, displayed in the block versioning UI
example: Reduced learning rate and more layers
createdBy:
type: string
description: The system component that created the block version (createImpulse | clone | tuner). Cannot be set via API.
example: createImpulse
createdAt:
type: string
format: date-time
description: The datetime that the block version was created. Cannot be set via API.
implementationVersion:
type: integer
description: Implementation version of the block
organization:
type: object
required:
- id
- dspId
properties:
id:
type: integer
dspId:
type: integer
customUrl:
type: string
description: Required for type 'custom'
namedAxes:
type: array
description: Named axes for the block
items:
type: object
required:
- name
properties:
name:
type: string
description: Name of the axis
description:
type: string
description: Description of the axis
required:
type: boolean
description: Whether the axis is required
selectedAxis:
type: string
description: The selected axis for the block
AdditionalMetric:
type: object
required:
- name
- value
- fullPrecisionValue
properties:
name:
type: string
value:
type: string
fullPrecisionValue:
type: number
tooltipText:
type: string
link:
type: string
PublicProjectTierAvailability:
description: For public blocks, this indicates the project tiers for which this block is available.
type: string
enum:
- enterprise-only
- pro-or-enterprise
- all-projects
CreateNewEmptyImpulseResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- id
- redirectUrl
properties:
id:
type: integer
description: ID of the new impulse
redirectUrl:
type: string
description: Link to redirect the user to afterwards
DetailedImpulseMetric:
type: object
required:
- name
- type
- category
- description
- value
properties:
name:
type: string
type:
type: string
enum:
- core
- additional
filteringType:
$ref: '#/components/schemas/DetailedImpulseMetricFilteringType'
category:
$ref: '#/components/schemas/DetailedImpulseMetricCategory'
description:
type: string
value:
oneOf:
- type: string
- type: boolean
title:
type: string
valueForSorting:
type: integer
valueHint:
type: string
description: Additional help explaining the value for this metric
ImpulseLearnBlock:
type: object
required:
- id
- type
- name
- dsp
- title
- primaryVersion
properties:
id:
type: integer
minimum: 1
description: Identifier for this block. Make sure to up this number when creating a new block, and don't re-use identifiers. If the block hasn't changed, keep the ID as-is. ID must be unique across the project and greather than zero (>0).
type:
$ref: '#/components/schemas/LearnBlockType'
name:
type: string
description: Block name, will be used in menus. If a block has a baseBlockId, this field is ignored and the base block's name is used instead.
# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-impulse-api-openapi.yml