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.
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-impulse-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 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:
DependencyData:
type: object
required:
- classes
- blockNames
- featureCount
- sampleCount
properties:
classes:
type: array
items:
type: string
blockNames:
type: array
items:
type: string
featureCount:
type: integer
sampleCount:
type: integer
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.
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
GetImpulseResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
properties:
impulse:
$ref: '#/components/schemas/Impulse'
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,)
AdditionalMetric:
type: object
required:
- name
- value
- fullPrecisionValue
properties:
name:
type: string
value:
type: string
fullPrecisionValue:
type: number
tooltipText:
type: string
link:
type: string
BlockDisplayCategory:
description: Category to display this block in the UI.
type: string
enum:
- classical
- tao
ObjectDetectionLastLayer:
type: string
enum:
- mobilenet-ssd
- fomo
- yolov2-akida
- yolov5
- yolov5v5-drpai
- yolox
- yolov7
- tao-retinanet
- tao-ssd
- tao-yolov3
- tao-yolov4
BlockParamsVisualAnomalyPatchcore:
type: object
properties:
backbone:
type: string
description: The backbone to use for feature extraction
numLayers:
type: integer
description: The number of layers in the feature extractor (1-3)
poolSize:
type: integer
description: The pool size for the feature extractor
samplingRatio:
type: number
description: The sampling ratio for the coreset, used for anomaly scoring
numNearestNeighbors:
type: integer
description: The number of nearest neighbors to consider, used for anomaly scoring
TransferLearningModel:
type: object
required:
- name
- shortName
- description
- hasNeurons
- hasDropout
- type
- author
- blockType
properties:
name:
type: string
shortName:
type: string
abbreviatedName:
type: string
description:
type: string
hasNeurons:
type: boolean
hasDropout:
type: boolean
defaultNeurons:
type: integer
defaultDropout:
type: number
defaultLearningRate:
type: number
defaultTrainingCycles:
type: number
hasImageAugmentation:
type: boolean
type:
$ref: '#/components/schemas/KerasVisualLayerType'
learnBlockType:
$ref: '#/components/schemas/LearnBlockType'
organizationModelId:
type: integer
implementationVersion:
type: integer
repositoryUrl:
type: string
description: URL to the source code of this custom learn block.
author:
type: string
blockType:
$ref: '#/components/schemas/BlockType'
customParameters:
type: array
items:
$ref: '#/components/schemas/DSPGroupItem'
displayCategory:
$ref: '#/components/schemas/BlockDisplayCategory'
CreateImpulseResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- id
properties:
id:
type: integer
description: ID of the new impulse
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
AugmentationPolicySpectrogram:
type: object
required:
- enabled
properties:
enabled:
type: boolean
description: True if spectrogram augmentation is enabled. Other properties will be ignored if this is false.
warping:
type: boolean
description: True if warping along the time axis is enabled.
freqMasking:
type: string
enum:
- none
- low
- high
description: The amount of frequency masking to apply.
timeMasking:
type: string
enum:
- none
- low
- high
description: The amount of time masking to apply.
gaussianNoise:
type: string
enum:
- none
- low
- high
description: The amount of Gaussian noise to add.
LearnBlockType:
type: string
description: The type of learning block (anomaly, keras, keras-transfer-image, keras-transfer-kws, keras-object-detection, keras-regression). Each behaves differently.
enum:
- anomaly
- anomaly-gmm
- keras
- keras-transfer-image
- keras-transfer-kws
- keras-object-detection
- keras-regression
- keras-akida
- keras-akida-transfer-image
- keras-akida-object-detection
- keras-visual-anomaly
AkidaEdgeLearningConfig:
type: object
required:
- enabled
properties:
enabled:
type: boolean
description: True if Akida Edge Learning model creation is enabled. Other properties will be ignored if this is false.
additionalClasses:
type: number
description: Number of additional classes that will be added to the Edge Learning model.
neuronsPerClass:
type: number
description: Number of neurons in each class on the last layer in the Edge Learning model.
CreateImpulseRequest:
type: object
required:
- inputBlocks
- dspBlocks
- learnBlocks
properties:
name:
type: string
description: Name for this impulse (optional). If no name is provided one is created based on your blocks.
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'
KerasModelMetadataMetrics:
type: object
required:
- type
- loss
- confusionMatrix
- report
- onDevicePerformance
- visualization
- isSupportedOnMcu
- additionalMetrics
properties:
type:
description: The type of model
$ref: '#/components/schemas/KerasModelTypeEnum'
loss:
type: number
description: The model's loss on the validation set after training
accuracy:
type: number
description: The model's accuracy on the validation set after training
confusionMatrix:
type: array
example:
- - 31
- 1
- 0
- - 2
- 27
- 3
- - 1
- 0
- 39
items:
type: array
items:
type: number
report:
type: object
description: Precision, recall, F1 and support scores
onDevicePerformance:
type: array
items:
type: object
required:
- mcu
- name
- isDefault
- latency
- tflite
- eon
properties:
mcu:
type: string
name:
type: string
isDefault:
type: boolean
latency:
type: number
tflite:
type: object
required:
- ramRequired
- romRequired
- arenaSize
- modelSize
properties:
ramRequired:
type: integer
romRequired:
type: integer
arenaSize:
type: integer
modelSize:
type: integer
eon:
type: object
required:
- ramRequired
- romRequired
- arenaSize
- modelSize
properties:
ramRequired:
type: integer
romRequired:
type: integer
arenaSize:
type: integer
modelSize:
type: integer
eon_ram_optimized:
type: object
required:
- ramRequired
- romRequired
- arenaSize
- modelSize
properties:
ramRequired:
type: integer
romRequired:
type: integer
arenaSize:
type: integer
modelSize:
type: integer
customMetrics:
description: Custom, device-specific performance metrics
type: array
items:
$ref: '#/components/schemas/KerasCustomMetric'
predictions:
type: array
items:
$ref: '#/components/schemas/ModelPrediction'
visualization:
type: string
enum:
- featureExplorer
- dataExplorer
- none
isSupportedOnMcu:
type: boolean
mcuSupportError:
type: string
profilingJobId:
description: If this is set, then we're still profiling this model. Subscribe to job updates to see when it's done (afterward the metadata will be updated).
type: integer
profilingJobFailed:
description: If this is set, then the profiling job failed (get the status by getting the job logs for 'profilingJobId').
type: boolean
additionalMetrics:
type: array
items:
$ref: '#/components/schemas/AdditionalMetric'
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)
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'
KerasVisualLayerType:
type: string
enum:
- dense
- conv1d
- conv2d
- reshape
- flatten
- dropout
- batchNormalization
- transfer_mobilenetv2_a35
- transfer_mobilenetv2_a1
- transfer_mobilenetv2_a05
- transfer_mobilenetv2_160_a1
- transfer_mobilenetv2_160_a75
- transfer_mobilenetv2_160_a5
- transfer_mobilenetv2_160_a35
- transfer_mobilenetv1_a25_d100
- transfer_mobilenetv1_a2_d100
- transfer_mobilenetv1_a1_d100
- transfer_kws_mobilenetv1_a1_d100
- transfer_kws_mobilenetv2_a35_d100
- transfer_kws_syntiant_ndp10x
- transfer_kws_conv2d_tiny
- object_ssd_mobilenet_v2_fpnlite_320x320
- fomo_mobilenet_v2_a01
- fomo_mobilenet_v2_a35
- transfer_organization
- transfer_akidanet_imagenet_160_a100
- transfer_akidanet_imagenet_160_a50
- transfer_akidanet_imagenet_160_a25
- transfer_akidanet_imagenet_224_a100
- transfer_akidanet_imagenet_224_a50
- transfer_akidanet_imagenet_224_a25
- fomo_akidanet_a50
- fomo_ad_gmm
- fomo_ad_patchcore
DSPGroup:
type: object
required:
- group
- items
properties:
group:
type: string
example: Scaling
items:
type: array
items:
$ref: '#/components/schemas/DSPGroupItem'
VerifyDspBlockUrlResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
properties:
block:
type: object
required:
- title
- author
- description
- name
- latestImplementationVersion
properties:
title:
type: string
author:
type: string
description:
type: string
name:
type: string
latestImplementationVersion:
type: integer
namedAxes:
type: array
items:
$ref: '#/components/schemas/DSPNamedAxis'
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
selected:
type: boolean
optionLabel:
type: string
readonly:
type: boolean
sho
# --- 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