Skip to content
Get started

Projects

Create
POST/projects
Delete
DELETE/projects/{projectId}
List
GET/projects
Retrieve
GET/projects/{projectId}
Update
PUT/projects/{projectId}
ModelsExpand Collapse
ProjectCreateResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

ProjectDeleteResponse = unknown
ProjectListResponse object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

ProjectRetrieveResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

ProjectUpdateResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

ProjectsAPI Keys

Create
POST/projects/{projectId}/api-keys
Delete
DELETE/projects/{projectId}/api-keys/{keyId}
ModelsExpand Collapse
APIKeyCreateResponse object { id, authorId, createdAt, 5 more }
id: string
authorId: string
createdAt: string
ownerType: "project" or "team"
One of the following:
"project"
"team"
secret: string
userId: string

The key’s member id (apiu_...), taken by the member routes; the api-keys routes take id.

ownerId: optional string
teamId: optional string
APIKeyDeleteResponse = unknown

ProjectsBrief

Delete
DELETE/projects/{projectId}/brief
Retrieve
GET/projects/{projectId}/brief
Update
PUT/projects/{projectId}/brief
ModelsExpand Collapse
BriefDeleteResponse object { deleted }
deleted: boolean
BriefRetrieveResponse object { brief }
brief: object { id, body, createdAt, 7 more }

A brand-style / project-rules / campaign-context brief stored at one scope.

id: string

Stable identifier derived from level + scopeId

body: string

Free-text brief: brand style, rules, campaign context

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the brief

enabled: boolean

Whether the brief is applied during verification

level: "project" or "team"

Scope this brief applies to: team or project

One of the following:
"project"
"team"
referenceAssetIds: array of string

Reference assets the verifier compares the image against

scopeId: string

The id of the team or project that owns this brief

updatedAt: string

ISO-8601 last-update timestamp

sensitivity: optional "high" or "low" or "medium"

Threshold strictness applied when verifying against this scope

One of the following:
"high"
"low"
"medium"
BriefUpdateResponse object { brief }
brief: object { id, body, createdAt, 7 more }

A brand-style / project-rules / campaign-context brief stored at one scope.

id: string

Stable identifier derived from level + scopeId

body: string

Free-text brief: brand style, rules, campaign context

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the brief

enabled: boolean

Whether the brief is applied during verification

level: "project" or "team"

Scope this brief applies to: team or project

One of the following:
"project"
"team"
referenceAssetIds: array of string

Reference assets the verifier compares the image against

scopeId: string

The id of the team or project that owns this brief

updatedAt: string

ISO-8601 last-update timestamp

sensitivity: optional "high" or "low" or "medium"

Threshold strictness applied when verifying against this scope

One of the following:
"high"
"low"
"medium"

ProjectsInstructions

Retrieve
GET/projects/{projectId}/instructions
Update
PUT/projects/{projectId}/instructions
ModelsExpand Collapse
InstructionRetrieveResponse object { memory }
memory: object { id, content, createdAt, 3 more }

Public JSON shape returned by GET endpoints

id: string

The memory ID — deterministic from scope + parent IDs (example: “mem_team_team_abc”)

content: string

Markdown content of the memory

createdAt: string

ISO 8601 timestamp when the memory was first written

sizeBytes: number

UTF-8 byte length of the content — used for quota enforcement

updatedAt: string

ISO 8601 timestamp when the memory was last updated

updatedBy: string

The userId of the last writer — useful for audit/UI

InstructionUpdateResponse object { memory }
memory: optional object { id, content, createdAt, 3 more }

Public JSON shape returned by GET endpoints

id: string

The memory ID — deterministic from scope + parent IDs (example: “mem_team_team_abc”)

content: string

Markdown content of the memory

createdAt: string

ISO 8601 timestamp when the memory was first written

sizeBytes: number

UTF-8 byte length of the content — used for quota enforcement

updatedAt: string

ISO 8601 timestamp when the memory was last updated

updatedBy: string

The userId of the last writer — useful for audit/UI

ProjectsMembers

Create
POST/projects/{projectId}/members
Delete
DELETE/projects/{projectId}/members/{memberId}
Update
PUT/projects/{projectId}/members/{memberId}
ModelsExpand Collapse
MemberCreateResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

MemberDeleteResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

MemberUpdateResponse object { project }
project: object { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: array of object { id, apiKeyId, apiKeyStatus, 11 more }

The keys of the project (get from the ProjectRoles table)

id: string

The key’s member id (its API user id, apiu_...), taken by the member and usage routes (example: “apiu_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyId: string

The API key id (api_...), taken by the api-keys routes (example: “api_eyVcnFJcR92BxBkz7N6g5w”)

apiKeyStatus: "active" or "inactive"

The status of the API key

One of the following:
"active"
"inactive"
createdAt: string

The API key creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

name: string

The API key name (example: “eurv-scenario”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

scope: "project" or "team"

The scope of the API key: ‘project’ for project-scoped keys, ‘team’ for team-scoped keys

One of the following:
"project"
"team"
updatedAt: string

The API key last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

authorId: optional string

The member who created the key: a human, or the member id (apiu_...) of the team API key that created it.

consumption: optional number

Consumption (CU) used by this key over the current billing period.

lastUsedAt: optional string

The date the API key was last used to authenticate a request, as an ISO string (example: “2023-02-03T11:19:41.579Z”). Absent if the key has never been used.

maxConsumption: optional number

The key’s effective consumption (CU) cap for the period (per-key override, else the team-wide default). Absent when the key is uncapped.

ownerId: optional string

For a PROJECT key: the project it was created on (the team id on some legacy keys). Absent for team keys.

projects: optional array of object { projectId, role }

For a PROJECT key: the projects it has access to and its role on each. Empty when the key is currently not a member of any (live) project. Absent for team keys.

projectId: string

The project the key has a role on

role: string

The key’s role on this project: a built-in role (admin/editor/reader) or a custom ;-separated scope list (example: "asset.read;model.read").

name: string

The project name (example: “Default Project”)

privacyMode: boolean

Whether the project is privacyMode In a privacyMode project, users can only see their own generated assets (except admins)

teamId: string

The team ID (example: “team_eyVcnFJcR92BxBkz7N6g5w”)

updatedAt: string
users: array of object { id, createdAt, email, 5 more }

The users of the project (get from the ProjectRoles table)

id: string

The user ID (example: “eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string

The user creation date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

email: string

The user email (example: “herve@scenario.com”)

role: string

A project role value. Accepted values are:

  • a built-in role: "admin", "editor" or "reader" (see ProjectRoles);
  • a custom inline role: a ;-separated scope list, e.g. "assets.write;workflows.run".

Resolved to capabilities by ProjectRole.scopesFromRole().

updatedAt: string

The user last update date as an ISO string (example: “2023-02-03T11:19:41.579Z”)

avatar: optional object { assetId, url }

The user’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this member over the current billing period.

maxConsumption: optional number

The member’s effective consumption (CU) cap for the period (per-user override, else the team-wide default). Absent when the member is uncapped.

avatar: optional object { assetId, url }

The project’s avatar

assetId: optional string

ID of the asset used as thumbnail if provided, otherwise undefined

url: optional string

Signed URL of the assetId or free url if assetId is undefined

consumption: optional number

Consumption (CU) used by this project over the current billing period.

description: optional string

High-level markdown description of the project Only returned on single project GET, not on list

descriptionDate: optional string

ISO string date when the description was last updated Only returned on single project GET, not on list

disableIpDetection: optional boolean

When true, IP detection is switched off for this project even if the team has an active posture. Absent means the team posture applies. The posture itself (disabled / active-fail-open / active-fail-closed) is a team-level setting, see the team’s ipDetectionEnforcement.

maxConsumption: optional number

The project’s consumption (CU) cap for the period. Absent when uncapped.

qualityGateAutoDetect: optional boolean

Whether Quality Gate auto-detection runs on generation for this project.

settings: optional object { homepage }

Project settings. Returned on GET and PUT /projects/{projectId}, absent from the projects list.

homepage: optional map[unknown]

Published homepage layout.

ProjectsMemory

Retrieve
GET/projects/{projectId}/memory
Update
PUT/projects/{projectId}/memory
ModelsExpand Collapse
MemoryRetrieveResponse object { memory }
memory: object { id, content, createdAt, 3 more }

Public JSON shape returned by GET endpoints

id: string

The memory ID — deterministic from scope + parent IDs (example: “mem_team_team_abc”)

content: string

Markdown content of the memory

createdAt: string

ISO 8601 timestamp when the memory was first written

sizeBytes: number

UTF-8 byte length of the content — used for quota enforcement

updatedAt: string

ISO 8601 timestamp when the memory was last updated

updatedBy: string

The userId of the last writer — useful for audit/UI

MemoryUpdateResponse object { memory }
memory: optional object { id, content, createdAt, 3 more }

Public JSON shape returned by GET endpoints

id: string

The memory ID — deterministic from scope + parent IDs (example: “mem_team_team_abc”)

content: string

Markdown content of the memory

createdAt: string

ISO 8601 timestamp when the memory was first written

sizeBytes: number

UTF-8 byte length of the content — used for quota enforcement

updatedAt: string

ISO 8601 timestamp when the memory was last updated

updatedBy: string

The userId of the last writer — useful for audit/UI

ProjectsWatermark

Delete
DELETE/projects/{projectId}/watermark
Delete Logo
DELETE/projects/{projectId}/watermark/logo
Preview
POST/projects/{projectId}/watermark/preview
Retrieve
GET/projects/{projectId}/watermark
Update
PUT/projects/{projectId}/watermark
Update Logo
PUT/projects/{projectId}/watermark/logo
ModelsExpand Collapse
WatermarkDeleteResponse object { deleted }
deleted: boolean
WatermarkDeleteLogoResponse object { watermark }
watermark: object { id, createdAt, createdBy, 14 more }

Forced-watermark configuration stored at one scope.

id: string

Stable identifier derived from level + scopeId

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the configuration

enabled: boolean

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: "project" or "team"

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: number

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: "bottom-left" or "bottom-right" or "center" or 3 more

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: number

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: number

Mark width as a fraction of the image width

scopeId: string

The id of the team or project that owns this configuration

spacing: number

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updatedAt: string

ISO-8601 last-update timestamp

version: number

Bumped on every write.

deletedAt: optional string

Set when the configuration has been deleted.

logoIsOpaque: optional boolean

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logoKey: optional string

Where the uploaded logo lives, when one is set.

text: optional string

Text rendered as the mark, when no logo is set

WatermarkPreviewResponse object { image }

Response of the watermark preview routes.

image: string

The sample image with the mark drawn on it, base64-encoded.

WatermarkRetrieveResponse object { watermark }
watermark: object { id, createdAt, createdBy, 14 more }

Forced-watermark configuration stored at one scope.

id: string

Stable identifier derived from level + scopeId

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the configuration

enabled: boolean

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: "project" or "team"

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: number

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: "bottom-left" or "bottom-right" or "center" or 3 more

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: number

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: number

Mark width as a fraction of the image width

scopeId: string

The id of the team or project that owns this configuration

spacing: number

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updatedAt: string

ISO-8601 last-update timestamp

version: number

Bumped on every write.

deletedAt: optional string

Set when the configuration has been deleted.

logoIsOpaque: optional boolean

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logoKey: optional string

Where the uploaded logo lives, when one is set.

text: optional string

Text rendered as the mark, when no logo is set

WatermarkUpdateResponse object { watermark }
watermark: object { id, createdAt, createdBy, 14 more }

Forced-watermark configuration stored at one scope.

id: string

Stable identifier derived from level + scopeId

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the configuration

enabled: boolean

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: "project" or "team"

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: number

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: "bottom-left" or "bottom-right" or "center" or 3 more

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: number

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: number

Mark width as a fraction of the image width

scopeId: string

The id of the team or project that owns this configuration

spacing: number

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updatedAt: string

ISO-8601 last-update timestamp

version: number

Bumped on every write.

deletedAt: optional string

Set when the configuration has been deleted.

logoIsOpaque: optional boolean

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logoKey: optional string

Where the uploaded logo lives, when one is set.

text: optional string

Text rendered as the mark, when no logo is set

WatermarkUpdateLogoResponse object { watermark }
watermark: object { id, createdAt, createdBy, 14 more }

Forced-watermark configuration stored at one scope.

id: string

Stable identifier derived from level + scopeId

createdAt: string

ISO-8601 creation timestamp

createdBy: string

User id that last wrote the configuration

enabled: boolean

Whether the watermark is enforced on assets generated in this scope. A disabled project configuration falls back to its team’s.

level: "project" or "team"

Scope this configuration applies to: team or project

One of the following:
"project"
"team"
opacity: number

Mark opacity, 0.05 (barely visible) to 1 (opaque)

placement: "bottom-left" or "bottom-right" or "center" or 3 more

Where the mark sits on the image

One of the following:
"bottom-left"
"bottom-right"
"center"
"tiled"
"top-left"
"top-right"
rotation: number

Mark rotation in degrees, -90 to 90. 0 is horizontal.

scale: number

Mark width as a fraction of the image width

scopeId: string

The id of the team or project that owns this configuration

spacing: number

Gap between repetitions, as a fraction of the mark’s own size. Tiled placement only; 0 repeats the mark edge to edge.

updatedAt: string

ISO-8601 last-update timestamp

version: number

Bumped on every write.

deletedAt: optional string

Set when the configuration has been deleted.

logoIsOpaque: optional boolean

Whether the stored logo has no transparency at all.

Recorded at upload so the UI can warn without decoding the image again: an opaque logo draws its whole rectangle, which a rotated tiled mark turns into a very visible diamond.

logoKey: optional string

Where the uploaded logo lives, when one is set.

text: optional string

Text rendered as the mark, when no logo is set

ProjectsWebhook Endpoints

Create
POST/projects/{projectId}/webhook-endpoints
Delete
DELETE/projects/{projectId}/webhook-endpoints/{webhookEndpointId}
List
GET/projects/{projectId}/webhook-endpoints
Update
PUT/projects/{projectId}/webhook-endpoints/{webhookEndpointId}
ModelsExpand Collapse
WebhookEndpointCreateResponse object { webhookEndpoint }
webhookEndpoint: object { id, createdAt, enabled, 9 more }

The creation response, and the only one that carries the secret: it is generated once and never returned again, so a client that loses it has to recreate the endpoint.

id: string

The ID of the webhook endpoint

createdAt: string

The date and time the webhook endpoint was created

enabled: boolean

Whether the webhook is enabled

enabledEvents: array of "*" or "asset.download.completed" or "asset.download.created" or 16 more

The events that trigger the webhook. [’*’] indicates that all events are enabled

One of the following:
"*"
"asset.download.completed"
"asset.download.created"
"asset.download.failed"
"generation.completed"
"generation.created"
"generation.failed"
"inference.cancelled"
"inference.completed"
"inference.created"
"inference.failed"
"model.download.completed"
"model.download.created"
"model.download.failed"
"model.training.cancelled"
"model.training.completed"
"model.training.failed"
"model.training.started"
"team.credit.threshold.crossed"
nbFailedCalls: number

The number of calls to the webhook endpoint that have failed

nbTotalCalls: number

The number of calls to the webhook endpoint

ownerId: string

The ID of the owner of the webhook endpoint: a project id for job lifecycle events, a team id for alert events

ownerType: "project" or "team"

Whether the owner is a project or a team. Required to tell them apart: a project created before the team/project split shares its team’s id

One of the following:
"project"
"team"
secret: string

The endpoint’s secret, used to generate webhook signatures

updatedAt: string

The date and time the webhook endpoint was updated

url: string

The URL of the webhook endpoint

description: optional string

A description of the webhook endpoint

WebhookEndpointDeleteResponse = unknown
WebhookEndpointListResponse object { webhookEndpoints }
webhookEndpoints: array of object { id, createdAt, enabled, 8 more }

A list of the project webhooks

id: string

The ID of the webhook endpoint

createdAt: string

The date and time the webhook endpoint was created

enabled: boolean

Whether the webhook is enabled

enabledEvents: array of "*" or "asset.download.completed" or "asset.download.created" or 16 more

The events that trigger the webhook. [’*’] indicates that all events are enabled

One of the following:
"*"
"asset.download.completed"
"asset.download.created"
"asset.download.failed"
"generation.completed"
"generation.created"
"generation.failed"
"inference.cancelled"
"inference.completed"
"inference.created"
"inference.failed"
"model.download.completed"
"model.download.created"
"model.download.failed"
"model.training.cancelled"
"model.training.completed"
"model.training.failed"
"model.training.started"
"team.credit.threshold.crossed"
nbFailedCalls: number

The number of calls to the webhook endpoint that have failed

nbTotalCalls: number

The number of calls to the webhook endpoint

ownerId: string

The ID of the owner of the webhook endpoint: a project id for job lifecycle events, a team id for alert events

ownerType: "project" or "team"

Whether the owner is a project or a team. Required to tell them apart: a project created before the team/project split shares its team’s id

One of the following:
"project"
"team"
updatedAt: string

The date and time the webhook endpoint was updated

url: string

The URL of the webhook endpoint

description: optional string

A description of the webhook endpoint

WebhookEndpointUpdateResponse object { webhookEndpoint }
webhookEndpoint: object { id, createdAt, enabled, 8 more }
id: string

The ID of the webhook endpoint

createdAt: string

The date and time the webhook endpoint was created

enabled: boolean

Whether the webhook is enabled

enabledEvents: array of "*" or "asset.download.completed" or "asset.download.created" or 16 more

The events that trigger the webhook. [’*’] indicates that all events are enabled

One of the following:
"*"
"asset.download.completed"
"asset.download.created"
"asset.download.failed"
"generation.completed"
"generation.created"
"generation.failed"
"inference.cancelled"
"inference.completed"
"inference.created"
"inference.failed"
"model.download.completed"
"model.download.created"
"model.download.failed"
"model.training.cancelled"
"model.training.completed"
"model.training.failed"
"model.training.started"
"team.credit.threshold.crossed"
nbFailedCalls: number

The number of calls to the webhook endpoint that have failed

nbTotalCalls: number

The number of calls to the webhook endpoint

ownerId: string

The ID of the owner of the webhook endpoint: a project id for job lifecycle events, a team id for alert events

ownerType: "project" or "team"

Whether the owner is a project or a team. Required to tell them apart: a project created before the team/project split shares its team’s id

One of the following:
"project"
"team"
updatedAt: string

The date and time the webhook endpoint was updated

url: string

The URL of the webhook endpoint

description: optional string

A description of the webhook endpoint

ProjectsWebhook EndpointsEvents

List
GET/projects/{projectId}/webhook-endpoints/{webhookEndpointId}/events
Retrieve
GET/projects/{projectId}/webhook-endpoints/{webhookEndpointId}/events/{eventId}
ModelsExpand Collapse
EventListResponse object { items, nextPaginationToken }
items: array of object { id, endpointId, status, 2 more }

A list of the project webhook events

id: string
endpointId: string
status: "created" or "failed" or "retrying" or "success"
One of the following:
"created"
"failed"
"retrying"
"success"
type: "*" or "asset.download.completed" or "asset.download.created" or 16 more

Every event a webhook endpoint can subscribe to: a project endpoint takes the job lifecycle events, a team endpoint takes the alert events.

One of the following:
"*"
"asset.download.completed"
"asset.download.created"
"asset.download.failed"
"generation.completed"
"generation.created"
"generation.failed"
"inference.cancelled"
"inference.completed"
"inference.created"
"inference.failed"
"model.download.completed"
"model.download.created"
"model.download.failed"
"model.training.cancelled"
"model.training.completed"
"model.training.failed"
"model.training.started"
"team.credit.threshold.crossed"
updatedAt: string
nextPaginationToken: optional string

A token to query the next page of events

EventRetrieveResponse object { webhookEvent }
webhookEvent: object { id, attempts, createdAt, 6 more }
id: string
attempts: array of object { responseStatusCode, sentAt }
responseStatusCode: number
sentAt: string
createdAt: string
endpointId: string
payload: unknown
sentAt: string
status: "created" or "failed" or "retrying" or "success"
One of the following:
"created"
"failed"
"retrying"
"success"
type: "*" or "asset.download.completed" or "asset.download.created" or 16 more

Every event a webhook endpoint can subscribe to: a project endpoint takes the job lifecycle events, a team endpoint takes the alert events.

One of the following:
"*"
"asset.download.completed"
"asset.download.created"
"asset.download.failed"
"generation.completed"
"generation.created"
"generation.failed"
"inference.cancelled"
"inference.completed"
"inference.created"
"inference.failed"
"model.download.completed"
"model.download.created"
"model.download.failed"
"model.training.cancelled"
"model.training.completed"
"model.training.failed"
"model.training.started"
"team.credit.threshold.crossed"
updatedAt: string