Edge Impulse Optimization API

The Optimization API from Edge Impulse — 15 operation(s) for optimization.

Operations 17

GET /api/{projectId}/optimize/runs List all tuner runs #
GET /api/{projectId}/optimize/config Get config #
POST /api/{projectId}/optimize/config Update config #
GET /api/{projectId}/optimize/all-learn-blocks Get all available learn blocks #
GET /api/{projectId}/optimize/window-settings Get window settings #
POST /api/{projectId}/optimize/score-trial Score trial #
POST /api/{projectId}/optimize/{jobId}/create-trial Create trial #
POST /api/{projectId}/optimize/{jobId}/complete-search Complete EON tuner run #
GET /api/{projectId}/optimize/space Search space #
GET /api/{projectId}/optimize/state Retrieves the EON tuner state #
DELETE /api/{projectId}/optimize/state Delete EON tuner state #
GET /api/{projectId}/optimize/dsp-parameters Retrieves DSP block parameters #
GET /api/{projectId}/optimize/transfer-learning-models Retrieves available transfer learning models #
GET /api/{projectId}/optimize/trial/{trialId}/stdout Get trial logs #
GET /api/{projectId}/optimize//{jobId}/trial/{trialId}/end-trial End EON tuner trial #
GET /api/{projectId}/optimize/{tunerCoordinatorJobId}/state Retrieves EON tuner state for a run. #
POST /api/{projectId}/optimize/{tunerCoordinatorJobId} Update EON tuner state #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/edge-impulse-optimization-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

edge-impulse-optimization-api-openapi.yml Raw ↑
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