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.
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-optimization-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 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:
TunerCreateTrialLearnBlock:
type: object
additionalProperties: true
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
BlockDisplayCategory:
description: Category to display this block in the UI.
type: string
enum:
- classical
- tao
AdditionalMetric:
type: object
required:
- name
- value
- fullPrecisionValue
properties:
name:
type: string
value:
type: string
fullPrecisionValue:
type: number
tooltipText:
type: string
link:
type: string
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'
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
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)
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
TunerCreateTrialImpulse:
type: object
required:
- inputBlock
- dspBlock
- learnBlock
properties:
id:
type: string
experiment:
type: string
original_trial_id:
type: string
optimizationRound:
type: number
inputBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialInputBlock'
dspBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialDSPBlock'
learnBlocks:
type: array
items:
$ref: '#/components/schemas/TunerCreateTrialLearnBlock'
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
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'
OptimizeConfigResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- $ref: '#/components/schemas/OptimizeConfig'
- type: object
properties:
device:
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'
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
shouldShow:
type: boolean
showIf:
type: object
required:
- parameter
- operator
- value
properties:
parameter:
type: string
operator:
type: string
enum:
- eq
- neq
value:
type: string
invalidText:
type: string
section:
type: string
description: Interface section to render parameter in.
enum:
- advanced
- augmentation
- modelProfiling
multiline:
type: boolean
description: Only valid for type "string". Will render a multiline text area.
required:
type: boolean
hint:
type: string
description: If set, shows a hint below the input.
placeholder:
type: string
description: Sets the placeholder text on the input element (for types "string", "int", "float" and "secret")
TunerSpaceInputBlock:
type: object
additionalProperties: true
AllLearnBlocksResponse:
allOf:
- $ref: '#/components/schemas/GenericApiResponse'
- type: object
required:
- learnBlocks
properties:
learnBlocks:
type: array
items:
type: object
required:
- type
- title
- author
- description
- name
properties:
type:
$ref: '#/components/schemas/LearnBlockType'
title:
type: string
author:
type: string
description:
type: string
name:
type: string
organizationModelId:
type: number
experiment:
type: string
displayCategory:
$ref: '#/components/schemas/BlockDisplayCategory'
publicProjectTierAvailability:
$ref: '#/components/schemas/PublicProjectTierAvailability'
TunerCompleteSearch:
type: object
required:
- success
properties:
success:
type: boolean
TunerCreateTrialInputBlock:
type: object
additionalProperties: true
ModelPrediction:
type: object
required:
- sampleId
- startMs
- endMs
- prediction
properties:
sampleId:
type: integer
startMs:
type: number
endMs:
type: number
label:
type: string
prediction:
type: string
predictionCorrect:
type: boolean
f1Score:
type: number
description: Only set for object detection projects
anomalyScores:
type: array
description: Only set for visual anomaly projects. 2D array of shape (n, n) with raw anomaly scores, where n varies based on the image input size and the specific visual anomaly algorithm used. The scores corresponds to each grid cell in the image's spatial matrix.
items:
type: array
items:
type: number
BlockType:
type: string
enum:
- official
- personal
- enterprise
- pro-or-enterprise
- community
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'
TunerSpaceImpulse:
type: object
required:
- inputBlocks
- dspBlocks
- learnBlocks
properties:
parameters:
type: object
description: Hyperparameters with potential values that can be used in any block in this impulse
inputBlocks:
type: array
description: Input Blocks that are part of this impulse
items:
$ref: '#/components/schemas/TunerSpaceInputBlock'
dspBlocks:
type: array
description: DSP Blocks that are part of this impulse
items:
$ref: '#/components/schemas/TunerSpaceDSPBlock'
learnBlocks:
type: array
description: Learning Blocks that are part of this impulse
items:
type: array
items:
$ref: '#/components/schemas/TunerSpaceLearnBlock'
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'
TunerCreateTrialDSPBlock:
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
# --- 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