openapi: 3.2.0 info: title: Edge Impulse Organization Jobs API version: 1.0.0 description: 'Operations tagged OrganizationJobs across 2 of this provider''s published API definitions: edge-impulse-openapi.yml, edge-impulse-studio-openapi-2026-09-06.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://studio.edgeimpulse.com/v1 tags: - name: Organization Jobs paths: /api/organizations/{organizationId}/jobs: get: summary: List active jobs description: Get all active jobs for this organization operationId: listActiveOrganizationJobs tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/history: get: summary: List finished jobs description: Get all finished jobs for this organization operationId: listFinishedOrganizationJobs tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/OptionalStartDateParameter' - $ref: '#/components/parameters/OptionalEndDateParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/OffsetResultsParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/all: get: summary: List all jobs description: Get all jobs for this organization operationId: listAllOrganizationJobs tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/OptionalStartDateParameter' - $ref: '#/components/parameters/OptionalEndDateParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/OffsetResultsParameter' - $ref: '#/components/parameters/ExcludePipelineTransformationJobsParameter' - $ref: '#/components/parameters/OnlyRootJobsParameter' - $ref: '#/components/parameters/OptionalJobsKeyParameter' - $ref: '#/components/parameters/OptionalJobsCategoryParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListJobsResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/{jobId}/cancel: post: summary: Cancel job description: Cancel a running job. operationId: cancelOrganizationJob tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/ForceCancelParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenericApiResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/{jobId}/status: get: summary: Get job status description: Get the status for a job. operationId: getOrganizationJobStatus tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/JobIdParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetJobResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/{jobId}/stdout: get: summary: Get logs description: Get the logs for a job. operationId: getOrganizationJobsLogs tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/LogLevelParameter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LogStdoutResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/jobs/{jobId}/stdout/download: get: summary: Download logs description: Download the logs for a job (as a text file). operationId: downloadOrganizationJobsLogs tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' - $ref: '#/components/parameters/JobIdParameter' - $ref: '#/components/parameters/LimitResultsParameter' - $ref: '#/components/parameters/LogLevelParameter' responses: '200': description: OK content: text/plain: schema: type: string security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 /api/organizations/{organizationId}/socket-token: get: summary: Get socket token for an organization description: Get a token to authenticate with the web socket interface. tags: - Organization Jobs x-middleware: - OrganizationAllowDeveloperProfile parameters: - $ref: '#/components/parameters/OrganizationIdParameter' operationId: getOrganizationSocketToken responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SocketTokenResponse' security: - ApiKeyAuthentication: [] - JWTAuthentication: [] - JWTHttpHeaderAuthentication: [] servers: - url: https://studio.edgeimpulse.com/v1 components: parameters: OrganizationIdParameter: name: organizationId in: path required: true description: Organization ID schema: type: integer ExcludePipelineTransformationJobsParameter: name: excludePipelineTransformJobs in: query required: false description: Whether to exclude pipeline / transformation jobs schema: type: boolean LimitResultsParameter: name: limit in: query required: false description: Maximum number of results schema: type: integer OptionalJobsKeyParameter: name: key in: query required: false description: Job key to filter on schema: type: string OptionalEndDateParameter: name: endDate in: query required: false description: End date schema: type: string format: date-time LogLevelParameter: name: logLevel in: query required: false description: Log level (error, warn, info, debug) schema: type: string enum: - error - warn - info - debug OptionalJobsCategoryParameter: name: category in: query required: false description: Job category to filter on schema: type: string OnlyRootJobsParameter: name: rootOnly in: query required: false description: Whether to exclude jobs with a parent ID (so jobs started as part of another job) schema: type: boolean ForceCancelParameter: name: forceCancel in: query required: false description: If set to 'true', we won't wait for the job cluster to cancel the job, and will mark the job as finished. schema: type: string OffsetResultsParameter: name: offset in: query required: false description: Offset in results, can be used in conjunction with LimitResultsParameter to implement paging. schema: type: integer JobIdParameter: name: jobId in: path required: true description: Job ID schema: type: integer OptionalStartDateParameter: name: startDate in: query required: false description: Start date schema: type: string format: date-time OptionalJobsFinishedParameter: name: finished in: query required: false description: Job finish status to filter on schema: type: string enum: - successful - failed - all schemas: GetJobResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - job properties: job: $ref: '#/components/schemas/Job' Job: type: object required: - id - key - created - category - jobNotificationUids properties: id: type: integer description: Job id, use this to refer back to the job. The web socket API also uses this ID. category: type: string key: type: string description: 'External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to ''keras-192'' for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for this ID and re-attach. ' created: type: string format: date-time description: When the job was created. started: type: string format: date-time description: When the job was started. finished: type: string format: date-time description: When the job was finished. finishedSuccessful: type: boolean description: Whether the job finished successfully. jobNotificationUids: type: array description: The IDs of users who should be notified when a job is finished. items: type: integer additionalInfo: type: string description: Additional metadata associated with this job. computeTime: type: number description: Job duration time in seconds from start to finished, measured by k8s job watcher. createdByUser: type: object required: - id - name - username properties: id: type: integer name: type: string username: type: string photo: type: string categoryCount: type: integer description: Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc. job was in the UI. GenericApiResponse: type: object required: - success properties: success: type: boolean description: Whether the operation succeeded error: type: string description: Optional error description (set if 'success' was false) 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) ListJobsResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - jobs - totalJobCount properties: jobs: type: array description: Active jobs items: $ref: '#/components/schemas/Job' totalJobCount: type: integer SocketTokenResponse: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - token properties: token: type: object required: - socketToken - expires properties: socketToken: type: string expires: type: string format: date-time Job_2: type: object required: - id - key - created - category - categoryKey - jobNotificationUids properties: id: type: integer description: Job id, use this to refer back to the job. The web socket API also uses this ID. category: type: string description: User-friendly category (e.g. "Training model") categoryKey: type: string description: Machine-readable category (e.g. "learn-train-studio-wrapper") key: type: string description: 'External job identifier, this can be used to categorize jobs, and recover job status. E.g. set this to ''keras-192'' for a Keras learning block with ID 192. When a user refreshes the page you can check whether a job is active for this ID and re-attach. ' created: type: string format: date-time description: When the job was created. started: type: string format: date-time description: When the job was started. finished: type: string format: date-time description: When the job was finished. finishedSuccessful: type: boolean description: Whether the job finished successfully. jobNotificationUids: type: array description: The IDs of users who should be notified when a job is finished. items: type: integer additionalInfo: type: string description: Additional metadata associated with this job. computeTime: type: number description: Job duration time in seconds from start to finished, measured by k8s job watcher. createdByUser: description: The user who started this job. $ref: '#/components/schemas/CreatedUpdatedByUser' categoryCount: type: integer description: Some job categories keep a counter on the job number, e.g. in synthetic data, so we know what the 1st, 2nd etc. job was in the UI. metadata: type: object description: Structured job metadata CreatedUpdatedByUser: type: object required: - id - name - username properties: id: type: integer name: type: string username: type: string photo: type: string JobLogItem: type: object required: - created - data properties: created: type: string format: date-time data: type: string logLevel: type: string enum: - error - warn - info - debug LogStdoutResponse_2: allOf: - $ref: '#/components/schemas/GenericApiResponse' - type: object required: - stdout - totalCount properties: stdout: type: array items: $ref: '#/components/schemas/JobLogItem' totalCount: type: integer description: Total number of logs (only the last 1000 lines are returned) securitySchemes: ApiKeyAuthentication: type: apiKey in: header name: x-api-key JWTAuthentication: type: apiKey in: cookie name: jwt JWTHttpHeaderAuthentication: type: apiKey in: header name: x-jwt-token OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: /v1/oauth/authorize tokenUrl: /v1/oauth/token scopes: openid: Access to basic profile information email: Access to email address profile: Access to full profile information implicit: authorizationUrl: /v1/oauth/authorize scopes: openid: Access to basic profile information email: Access to email address profile: Access to full profile information password: tokenUrl: /v1/oauth/token scopes: openid: Access to basic profile information email: Access to email address profile: Access to full profile information clientCredentials: tokenUrl: /v1/oauth/token scopes: openid: Access to basic profile information email: Access to email address profile: Access to full profile information x-refined-from: - edge-impulse-openapi.yml - edge-impulse-studio-openapi-2026-09-06.yml