Edge Impulse Projects API
The Projects API from Edge Impulse — 46 operation(s) for projects.
The Projects API from Edge Impulse — 46 operation(s) for projects.
openapi: 3.0.0
info:
title: Edge Impulse Projects API
version: 1.0.0
servers:
- url: https://studio.edgeimpulse.com/v1
security:
- ApiKeyAuthentication: []
- JWTAuthentication: []
- JWTHttpHeaderAuthentication: []
tags:
- name: Projects
paths:
/api/projects:
get:
summary: List active projects
x-skip-route: true
description: Retrieve list of active projects. If authenticating using JWT token this lists all the projects the user has access to, if authenticating using an API key, this only lists that project.
tags:
- Projects
operationId: listProjects
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListProjectsResponse'
/api/projects/create:
post:
summary: Create new project
description: Create a new project. This API can only be called using a JWT token.
tags:
- Projects
operationId: createProject
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateProjectResponse'
/api/{projectId}/devkeys:
get:
summary: Get development keys
description: Retrieve the development API and HMAC keys for a project. These keys are specifically marked to be used during development. These keys can be `undefined` if no development keys are set.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listDevkeys
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DevelopmentKeysResponse'
/api/{projectId}/downloads:
get:
summary: Get downloads
description: Retrieve the downloads for a project.
tags:
- Projects
x-middleware:
- AllowsReadOnly
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
operationId: listDownloads
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectDownloadsResponse'
/api/{projectId}/csv-wizard/download-config:
get:
summary: Download CSV Wizard config
description: Returns a JSON file with the current CSV wizard config. If there is no config this will throw a 5xx error.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: downloadCsvWizardConfig
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/csv-wizard/uploaded-file:
get:
summary: Get CSV Wizard uploaded file info
description: Returns whether the file that was uploaded when the CSV wizard was configured is available.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: getCsvWizardUploadedFileInfo
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetCsvWizardUploadedFileInfo'
post:
summary: Store CSV Wizard uploaded file
description: Asynchronously called in the CSV Wizard to store the file that the CSV wizard was based on.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: uploadCsvWizardUploadedFile
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadCsvWizardUploadedFileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/csv-wizard/uploaded-file/download:
get:
summary: Download CSV Wizard uploaded file
description: Returns the file that was uploaded when the CSV wizard was configured. If there is no config this will throw a 5xx error.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: downloadCsvWizardUploadedFile
responses:
'200':
description: OK
content:
application/octet-stream:
schema:
type: string
format: binary
/api/{projectId}/collaborators/add:
post:
summary: Add collaborator
description: Add a collaborator to a project.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: addCollaborator
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddCollaboratorRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EntityCreatedResponse'
/api/{projectId}/collaborators/remove:
post:
summary: Remove collaborator
description: Remove a collaborator to a project. Note that you cannot invoke this function if only a single collaborator is present.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: removeCollaborator
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveCollaboratorRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/collaborators/transfer-ownership:
post:
summary: Transfer ownership (user)
description: Transfer ownership of a project to another user.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: transferOwnership
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddCollaboratorRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/collaborators/transfer-ownership-org:
post:
summary: Transfer ownership (organization)
description: Transfer ownership of a project to another organization.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: transferOwnershipOrganization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransferOwnershipOrganizationRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/hmackeys:
get:
summary: Get HMAC keys
description: Retrieve all HMAC keys.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listProjectHmacKeys
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListHmacKeysResponse'
post:
summary: Add HMAC key
description: Add an HMAC key. If you set `developmentKey` to `true` this flag will be removed from the current development HMAC key.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: addProjectHmacKey
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddHmacKeyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EntityCreatedResponse'
/api/{projectId}/hmackeys/{hmacId}:
delete:
summary: Remove HMAC key
description: Revoke an HMAC key. Note that if you revoke the development key some services (such as automatic provisioning of devices through the serial daemon) will no longer work.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/HmacIdParameter'
operationId: revokeProjectHmacKey
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/apikeys:
get:
summary: Get API keys
description: Retrieve all API keys. This does **not** return the full API key, but only a portion (for security purposes). The development key will be returned in full, as it'll be set in devices and is thus not private.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listProjectApiKeys
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListApiKeysResponse'
post:
summary: Add API key
description: Add an API key. If you set `developmentKey` to `true` this flag will be removed from the current development API key.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: addProjectApiKey
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddProjectApiKeyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AddApiKeyResponse'
/api/{projectId}/apikeys/{apiKeyId}:
delete:
summary: Revoke API key
description: Revoke an API key. Note that if you revoke the development API key some services (such as automatic provisioning of devices through the serial daemon) will no longer work.
tags:
- Projects
x-middleware:
- ProjectRequiresAdmin
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ApiKeyIdParameter'
operationId: revokeProjectApiKey
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/emails:
get:
summary: List emails
description: Get a list of all emails sent by Edge Impulse regarding this project.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listEmails
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListEmailResponse'
/api/{projectId}/socket-token:
get:
summary: Get socket token
description: Get a token to authenticate with the web socket interface.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: getSocketToken
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SocketTokenResponse'
/api/{projectId}/data-axes:
get:
summary: Get data axes summary
description: Get a list of axes that are present in the training data.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/IncludeDisabledParameter'
- $ref: '#/components/parameters/IncludeNotProcessedParameter'
operationId: getProjectDataAxesSummary
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectDataAxesSummaryResponse'
/api/{projectId}/data-summary:
get:
summary: Get data summary
description: Get summary of all data present in the training set. This returns the number of data items, the total length of all data, and the labels. This is similar to `dataSummary` in `ProjectInfoResponse` but allows you to exclude disabled items or items that are still processing.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/IncludeDisabledParameter'
- $ref: '#/components/parameters/IncludeNotProcessedParameter'
operationId: getProjectTrainingDataSummary
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectTrainingDataSummaryResponse'
/api/{projectId}/data-interval:
get:
summary: Get the interval (in ms) of the training data
description: Get the interval of the training data; if multiple intervals are present, the interval of the longest data item is returned.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: getProjectRecommendedDataInterval
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectDataIntervalResponse'
/api/{projectId}/compute-time-limit:
post:
summary: Set compute time limit
description: Change the job compute time limit for the project. This function is only available through a JWT token, and is not available to all users.
security:
- permissions:
- projects:limits:write
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: setProjectComputeTimeLimit
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetProjectComputeTimeRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/dsp-file-size-limit:
post:
summary: Set DSP file size limit
description: Change the DSP file size limit for the project. This function is only available through a JWT token, and is not available to all users.
security:
- permissions:
- projects:limits:write
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: setProjectFileSizeLimit
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetProjectDspFileSizeRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/versions:
get:
summary: List versions
description: Get all versions for this project.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listVersions
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListVersionsResponse'
/api/{projectId}/versions/public:
get:
summary: List public versions
description: Get all public versions for this project. You don't need any authentication for this function.
security: []
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: listPublicVersions
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListPublicVersionsResponse'
/api/{projectId}/versions/{versionId}:
post:
summary: Update version
description: Updates a version, this only updates fields that were set in the body.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/VersionIdParameter'
operationId: updateVersion
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateVersionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
delete:
summary: Delete versions
description: Delete a version. This does not delete the version from cold storage.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/VersionIdParameter'
operationId: deleteVersion
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/versions/{versionId}/make-private:
post:
summary: Make version private
description: Make a public version private.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/VersionIdParameter'
operationId: makeVersionPrivate
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/readme/upload-image:
post:
summary: Upload image for readme
description: Uploads an image to the user CDN and returns the path.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: uploadReadmeImage
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadImageRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UploadReadmeImageResponse'
/api/{projectId}/launch-getting-started:
post:
summary: Launch getting started wizard
description: This clears out *all data in your project*, and is irrevocable. This function is only available through a JWT token, and is not available to all users.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: launchGettingStartedWizard
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/last-modification:
get:
summary: Last modification
description: Get the last modification date for a project (will be upped when data is modified, or when an impulse is trained)
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: getProjectLastModificationDate
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LastModificationDateResponse'
/api/{projectId}/development-boards:
get:
summary: Development boards
description: List all development boards for a project
operationId: listDevelopmentBoards
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DevelopmentBoardsResponse'
/api/{projectId}/target-constraints:
get:
summary: Get target constraints
description: Retrieve target constraints for a project. The constraints object captures hardware attributes of your target device, along with an application budget to allow guidance on performance and resource usage
operationId: getTargetConstraints
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetTargetConstraintsResponse'
post:
summary: Set target constraints
description: Set target constraints for a project. Use the constraints object to capture hardware attributes of your target device, along with an application budget to allow guidance on performance and resource usage
operationId: setTargetConstraints
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TargetConstraints'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/model-variants:
get:
summary: Get a list of all model variants available for this project
description: Get a list of model variants applicable to all trained learn blocks in this project.
operationId: getModelVariants
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetModelVariantsResponse'
/api/{projectId}/dismiss-notification:
post:
summary: Dismiss a notification
description: Dismiss a notification
operationId: projectDismissNotification
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectDismissNotificationRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/synthetic-data:
get:
summary: Get synthetic data config
description: Get the last used synthetic data config
operationId: getSyntheticDataConfig
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetSyntheticDataConfigResponse'
/api/{projectId}/ai-actions:
get:
summary: List AI Actions
description: Get all AI actions.
operationId: listAIActions
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListAIActionsResponse'
/api/{projectId}/ai-actions/order:
post:
summary: Set AI Actions order
description: Change the order of AI actions. Post the new order of all AI Actions by ID. You need to specify _all_ AI Actions here. If not, an error will be thrown.
operationId: setAIActionsOrder
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetAIActionsOrderRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/ai-actions/create:
post:
summary: Create AI Action
description: Create a new AI Action.
operationId: createAIAction
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EntityCreatedResponse'
/api/{projectId}/ai-actions/new:
get:
summary: Get new AI Actions config
description: Get the AI Actions config for a new action
operationId: getNewAIAction
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAIActionResponse'
/api/{projectId}/ai-actions/{actionId}:
get:
summary: Get AI Actions config
description: Get an AI Actions config
operationId: getAIAction
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ActionIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAIActionResponse'
post:
summary: Save AI Actions config
description: Store an AI Actions config. Use `createAIActionsJob` to run the job. Post the full AI Action here w/ all parameters.
operationId: updateAIAction
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ActionIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAIActionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
delete:
summary: Delete AI Actions config
description: Deletes an AI Actions.
operationId: deleteAIAction
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ActionIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/ai-actions/{actionId}/preview-samples:
post:
summary: Preview samples for AI Actions
description: Get a number of random samples to show in the AI Actions screen. If `saveConfig` is passed in, then a valid actionId is required in the URL. If you don't need to save the config (e.g. when creating a new action), you can use -1.
operationId: previewAIActionsSamples
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ActionIdParameter'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PreviewAIActionsSamplesRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListSamplesResponse'
/api/{projectId}/ai-actions/{actionId}/clear-proposed-changes:
get:
summary: Clear AI Actions proposed changes
description: Remove all proposed changes for an AI Actions job.
operationId: clearAIActionsProposedChanges
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/ActionIdParameter'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/{projectId}/tags:
post:
summary: Update tags
description: Update the list of project tags.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
operationId: updateProjectTags
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProjectTagsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenericApiResponse'
/api/projects/public:
get:
summary: List public projects
description: Retrieve the list of all public projects. You don't need any authentication for this method.
security: []
tags:
- Projects
parameters:
- $ref: '#/components/parameters/LimitResultsParameter'
- $ref: '#/components/parameters/OffsetResultsParameter'
- $ref: '#/components/parameters/FiltersProjectNameParameter'
- $ref: '#/components/parameters/FiltersProjectTypesParameter'
- $ref: '#/components/parameters/SortQueryParameter'
operationId: listPublicProjects
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListPublicProjectsResponse'
/api/projects/types:
get:
summary: List public project types
description: Retrieve the list of available public project types. You don't need any authentication for this method.
security: []
tags:
- Projects
operationId: listPublicProjectTypes
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListPublicProjectTypesResponse'
/api/{projectId}:
get:
summary: Project information
description: List all information about this project.
tags:
- Projects
parameters:
- $ref: '#/components/parameters/ProjectIdParameter'
- $ref: '#/components/parameters/OptionalImpulseIdParameter'
operationId: getProjectInfo
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectInfoResponse'
post:
summary: Update project
description: Update project properties such as name a
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-impulse/refs/heads/main/openapi/edge-impulse-projects-api-openapi.yml