Edge Impulse Optimization API
The Optimization API from Edge Impulse — 15 operation(s) for optimization.
The Optimization API from Edge Impulse — 15 operation(s) for optimization.
openapi: 3.0.0
info:
title: Edge Impulse Optimization API
version: 1.0.0
servers:
- url: https://studio.edgeimpulse.com/v1
security:
- ApiKeyAuthentication: []
- JWTAuthentication: []
- JWTHttpHeaderAuthentication: []
tags:
- name: Optimization
paths:
/api/{projectId}/optimize/runs:
get:
summary: List all tuner runs
description: List all the tuner runs for a project.
operationId: listTunerRuns
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListTunerRunsResponse'
/api/{projectId}/optimize/config:
get:
summary: Get config
description: Get config
operationId: getConfig
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeConfigResponse'
post:
summary: Update config
description: Update config
operationId: updateConfig
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeConfig'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/optimize/all-learn-blocks:
get:
summary: Get all available learn blocks
description: Get all available learn blocks
operationId: getAllLearnBlocks
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AllLearnBlocksResponse'
/api/{projectId}/optimize/window-settings:
get:
summary: Get window settings
description: Get window settings
operationId: getWindowSettings
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WindowSettingsResponse'
/api/{projectId}/optimize/score-trial:
post:
summary: Score trial
description: Score trial
operationId: scoreTrial
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TunerCreateTrialImpulse'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ScoreTrialResponse'
/api/{projectId}/optimize/{jobId}/create-trial:
post:
summary: Create trial
description: Create trial
operationId: createTrial
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/JobIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TunerCreateTrialImpulse'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/optimize/{jobId}/complete-search:
post:
summary: Complete EON tuner run
description: Complete EON tuner run and mark it as succesful
operationId: completeSearch
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/JobIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TunerCompleteSearch'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/optimize/space:
get:
summary: Search space
description: Search space
operationId: getSpace
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeSpaceResponse'
/api/{projectId}/optimize/state:
get:
summary: Retrieves the EON tuner state
description: Retrieves the EON tuner state
operationId: getState
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: Current EON tuner state
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeStateResponse'
delete:
summary: Delete EON tuner state
description: Completely clears the EON tuner state for this project.
operationId: deleteState
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/optimize/dsp-parameters:
get:
summary: Retrieves DSP block parameters
description: Retrieves DSP block parameters
operationId: getDspParameters
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptimizeOrganizationIdParameter'
- $ref: '#/components/parameters/OptimizeOrganizationDspIdParameter'
responses:
'200':
description: DSP parameters
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeDSPParametersResponse'
/api/{projectId}/optimize/transfer-learning-models:
get:
summary: Retrieves available transfer learning models
description: Retrieves available transfer learning models
operationId: getTransferLearningModels
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: Block info
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeTransferLearningModelsResponse'
/api/{projectId}/optimize/trial/{trialId}/stdout:
get:
summary: Get trial logs
description: Get the logs for a trial.
operationId: getTrialLogs
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/TrialIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LogStdoutResponse'
/api/{projectId}/optimize//{jobId}/trial/{trialId}/end-trial:
get:
summary: End EON tuner trial
description: End an EON trial early. This can for example be used to implement early stopping.
operationId: endTrial
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/JobIdParameter'
- $ref: '#/components/parameters/TrialIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/optimize/{tunerCoordinatorJobId}/state:
get:
summary: Retrieves EON tuner state for a run.
description: Retrieves the EON tuner state for a specific run.
operationId: getTunerRunState
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/TunerCoordinatorJobIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizeStateResponse'
/api/{projectId}/optimize/{tunerCoordinatorJobId}:
post:
summary: Update EON tuner state
description: Updates the EON tuner state for a specific run.
operationId: updateTunerRun
tags:
- Optimization
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/TunerCoordinatorJobIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTunerRunRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
components:
schemas:
LogStdoutResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- stdout
- totalCount
properties:
stdout:
type: array
items:
type: object
required:
- created
- data
properties:
created:
type: string
format: date-time
data:
type: string
logLevel:
type: string
enum:
- error
- warn
- info
- debug
totalCount:
type: integer
description: Total number of logs (only the last 1000 lines are returned)
BlockDisplayCategory:
description: Category to display this block in the UI.
type: string
enum:
- classical
- tao
UpdateTunerRunRequest:
type: object
properties:
name:
type: string
ListTunerRunsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- runs
properties:
runs:
type: array
items:
$ref: '#/components/schemas/TunerRun'
BlockType:
type: string
enum:
- official
- personal
- enterprise
- pro-or-enterprise
- community
TunerCompleteSearch:
type: object
required:
- success
properties:
success:
type: boolean
ScoreTrialResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- latency
- ram
- rom
- score
properties:
score:
type: number
latency:
type: object
required:
- dspMips
- dspMs
- learnMaccs
- learnMs
properties:
dspMips:
type: number
dspMs:
type: number
learnMaccs:
type: number
learnMs:
type: number
ram:
type: object
required:
- dsp
- learn
properties:
dsp:
type: number
learn:
type: number
rom:
type: object
required:
- dsp
- learn
properties:
dsp:
type: number
learn:
type: number
OptimizeDSPParametersResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- parameters
properties:
parameters:
type: object
TunerRun:
type: object
required:
- tunerJobId
- tunerCoordinatorJobId
- index
- created
- jobStatus
properties:
tunerJobId:
type: integer
tunerCoordinatorJobId:
type: integer
index:
type: integer
name:
type: string
created:
type: string
format: date-time
jobStatus:
$ref: '#/components/schemas/JobStatus'
continuationJobId:
type: integer
space:
type: array
description: List of impulses specifying the EON Tuner search space
items:
$ref: '#/components/schemas/TunerSpaceImpulse'
TunerSpaceLearnBlock:
type: object
additionalProperties: true
OptimizeConfig:
type: object
required:
- targetDevice
- targetLatency
properties:
name:
type: string
targetLatency:
type: integer
description: Target latency in MS
example: 0
targetDevice:
type: object
required:
- name
description: Target device
properties:
name:
type: string
example: cortex-m4f-80mhz
ram:
type: integer
example: 1024
rom:
type: integer
example: 1024
compiler:
type: array
items:
type: string
precision:
type: array
items:
type: string
trainingCycles:
type: integer
description: Maximum number of training cycles
example: 5
tuningMaxTrials:
type: integer
description: Maximum number of trials
example: 2
tuningWorkers:
type: integer
description: Maximum number of parallel workers/jobs
example: 1
initialTrials:
type: integer
description: Number of initial trials
example: 5
optimizationRounds:
type: integer
description: Number of optimization rounds
example: 3
trialsPerOptimizationRound:
type: integer
description: Number of trials per optimization round
example: 3
minMACCS:
type: number
maxMACCS:
type: number
tuningAlgorithm:
type: string
description: Tuning algorithm to use to search hyperparameter space
enum:
- random
- hyperband
- bayesian
- custom
notificationOnCompletion:
type: boolean
importProjectMetrics:
type: boolean
description: Whether to import metrics for previous EON tuner runs in the same project to accelerate the hyperparameter search process
importResourceMetrics:
type: boolean
description: Whether to import resource usage (RAM/ROM/latency) metrics to accelerate the hyperparameter search process
numImportProjectMetrics:
type: number
description: Number of project trials to import
numImportResourceMetrics:
type: number
description: Number of resource usage trials to import
enableSEM:
type: boolean
description: Enable standard error of the mean (SEM)
accuracySEM:
type: number
description: Standard error of the trial accuracy mean
latencySEM:
type: number
description: Standard error of the trial latency mean
optimizationObjectives:
type: array
description: Hyperparameter optimization objectives and corresponding weights
items:
type: object
required:
- objective
- label
- weight
properties:
objective:
type: string
description: Objective to optimize
label:
type: string
description: Label of the objective
weight:
type: number
description: Weight of the objective
rawObjectives:
type: string
description: Hyperparameter optimization objectives + weights in string format
optimizationPrecision:
type: string
description: Model variant to optimize for
enum:
- float32
- int8
earlyStopping:
type: boolean
description: Enable trial level early stopping based on loss metrics during training
earlyStoppingWindowSize:
type: number
description: Stops the EON tuner if the feasible (mean) objective has not improved over the past window_size iterations
earlyStoppingImprovementBar:
type: number
description: Threshold (in [0,1]) for considering relative improvement over the best point.
MOMF:
type: boolean
description: Enable Multi-fidelity Multi-Objective optimization
verboseLogging:
type: boolean
description: Enable verbose logging
disableConstraints:
type: boolean
description: Disable search constraints
disableDeduplicate:
type: boolean
description: Disable trial deduplication
tunerSpaceOptions:
type: object
additionalProperties:
type: array
items:
type: string
space:
type: array
description: List of impulses specifying the EON Tuner search space
items:
$ref: '#/components/schemas/TunerSpaceImpulse'
searchSpaceTemplate:
type: object
description: Search space template
required:
- identifier
properties:
identifier:
type: string
description: Search space template identifier
enum:
- speech_keyword
- speech_continuous
- audio_event
- audio_continuous
- visual
- motion_event
- motion_continuous
- audio_syntiant
- object_detection_bounding_boxes
- object_detection_centroids
- visual_ad
classification:
type: boolean
description: Whether a classification block should be added to the search space
anomaly:
type: boolean
description: Whether an anomaly block should be added to the search space
regression:
type: boolean
description: Whether a regression block should be added to the search space
searchSpaceSource:
type: object
description: Search space source
required:
- type
properties:
type:
type: string
description: Search space source type
enum:
- template
- run
- impulse
templateTitle:
type: string
description: Search space source template title
runTitle:
type: string
description: Search space source run title
impulseTitle:
type: string
description: Search space source impulse title
TunerCreateTrialLearnBlock:
type: object
additionalProperties: true
TunerTrial:
type: object
required:
- id
- name
- status
- blocks
- impulse
properties:
id:
type: string
name:
type: string
status:
type: string
enum:
- pending
- running
- completed
- failed
lastCompletedEpoch:
type: string
format: date-time
lastCompletedTraining:
type: string
format: date-time
retries:
type: integer
currentEpoch:
type: integer
workerId:
type: string
blocks:
type: array
items:
type: object
required:
- id
- type
- retries
- status
- blockId
properties:
id:
type: integer
lastActive:
type: string
format: date-time
retries:
type: integer
status:
type: string
enum:
- pending
- running
- completed
- failed
type:
type: string
enum:
- input
- dsp
- learn
modelBlockIndex:
type: integer
description: Index of corresponding DSP/learn block in the impulse model passed to createTrial()
impulse:
$ref: '#/components/schemas/TunerTrialImpulse'
experiment:
type: string
original_trial_id:
type: string
model:
type: object
additionalProperties: true
dspJobId:
type: object
properties:
training:
type: number
testing:
type: number
learnJobId:
type: number
devicePerformance:
type: object
additionalProperties: true
optimizationRound:
type: number
progress:
type: object
required:
- epoch
- loss
- val_loss
- accuracy
- val_accuracy
properties:
epoch:
type: number
loss:
type: number
val_loss:
type: number
accuracy:
type: number
val_accuracy:
type: number
metrics:
type: object
properties:
test:
type: object
properties:
float32:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
int8:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
train:
type: object
properties:
float32:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
int8:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
validation:
type: object
properties:
float32:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
int8:
$ref: '#/components/schemas/KerasModelMetadataMetrics'
impulseAddedToProject:
type: object
required:
- impulseId
- link
properties:
impulseId:
type: integer
link:
type: string
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
OptimizeStateResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- config
- status
- trials
- workers
- projectDataType
- tunerJobIsRunning
- nextRunIndex
- isWhitelabel
properties:
config:
$ref: '#/components/schemas/OptimizeConfig'
status:
type: object
required:
- numPendingTrials
- numRunningTrials
- numCompletedTrials
- numFailedTrials
- numReadyWorkers
- numBusyWorkers
- numPendingWorkers
- status
properties:
numPendingTrials:
type: integer
numRunningTrials:
type: integer
numCompletedTrials:
type: integer
numFailedTrials:
type: integer
numReadyWorkers:
type: integer
numBusyWorkers:
type: integer
numPendingWorkers:
type: integer
status:
type: string
enum:
- creating
- ready
- running
- completed
tunerJobId:
description: Actual tuner process, job message events will be tagged with this ID
type: integer
tunerCoordinatorJobId:
description: The coordinator pod, attach the job runner to this process for finished events
type: integer
continuationJobId:
description: Job ID for the initial job this job continuous the hyperparameter search process for.
type: integer
tuningAlgorithm:
type: string
description: Tuning algorithm to use to search hyperparameter space
enum:
- random
- hyperband
- bayesian
- custom
tunerJobIsRunning:
description: Whether the job is active (if false => finished)
type: boolean
trials:
type: array
items:
$ref: '#/components/schemas/TunerTrial'
projectDataType:
type: string
enum:
- audio
- image
- motion
- other
jobError:
type: string
workers:
type: array
items:
type: object
required:
- workerId
- status
properties:
workerId:
type: string
status:
type: string
enum:
- pending
- ready
- busy
nextRunIndex:
type: integer
isWhitelabel:
type: boolean
TunerTrialImpulse:
type: object
required:
- inputBlock
- dspBlock
- learnBlock
properties:
inputBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialInputBlock'
dspBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialDSPBlock'
learnBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialLearnBlock'
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
AdditionalMetric:
type: object
required:
- name
- value
- fullPrecisionValue
properties:
name:
type: string
value:
type: string
fullPrecisionValue:
type: number
tooltipText:
type: string
link:
type: string
TunerSpaceDSPBlock:
type: object
additionalProperties: true
TunerCreateTrialInputBlock:
type: object
additionalProperties: true
OptimizeConfigResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- $ref: '#/components/schemas/OptimizeConfig'
- type: object
properties:
device:
type: object
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
OptimizeSpaceResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- impulse
properties:
impulse:
type: array
description: List of impulses specifying the EON Tuner search space
items:
$ref: '#/components/schemas/TunerSpaceImpulse'
OptimizeTransferLearningModelsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- models
properties:
models:
type: object
required:
- image
- objectDetection
- kws
- regression
- classification
properties:
image:
type: array
items:
$ref: '#/components/schemas/TransferLearningModel'
objectDetection:
type: array
items:
$ref: '#/components/schemas/TransferLearningModel'
kws:
type: array
items:
$ref: '#/components/schemas/TransferLearningModel'
regression:
type: array
items:
$ref: '#/components/schemas/TransferLearningModel'
classification:
type: array
items:
$ref: '#/components/schemas/TransferLearningModel'
WindowSettingsResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- windowSettingsEvent
- windowSettingsContinuous
properties:
windowSettingsEvent:
type: array
items:
$ref: '#/components/schemas/WindowSettings'
windowSettingsContinuous:
type: array
items:
$ref: '#/components/schemas/WindowSettings'
WindowSettings:
type: object
required:
- windowSizeMs
- windowIncreaseMs
- windowIncreasePct
- zeroPadPercentage
- windowCount
- balanceScore
- valid
properties:
windowSizeMs:
type: number
windowIncreaseMs:
type: number
windowIncreasePct:
type: number
zeroPadPercentage:
type: number
windowCount:
type: integer
balanceScore:
type: number
valid:
type: boolean
TransferLearningModel:
type: object
required:
- name
- shortName
- description
- hasNeurons
- hasDropout
# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-optimization-api-openapi.yml