Skip to content
Get started

Projects

Create
client.projects.create(ProjectCreateParams { name, teamId, autoJoin, privacyMode } params, RequestOptionsoptions?): ProjectCreateResponse { project }
POST/projects
Delete
client.projects.delete(stringprojectID, RequestOptionsoptions?): ProjectDeleteResponse
DELETE/projects/{projectId}
List
client.projects.list(ProjectListParams { pageSize, paginationToken, teamId } query?, RequestOptionsoptions?): ProjectsCursor<ProjectListResponse { id, createdAt, keys, 13 more } >
GET/projects
Retrieve
client.projects.retrieve(stringprojectID, RequestOptionsoptions?): ProjectRetrieveResponse { project }
GET/projects/{projectId}
Update
client.projects.update(stringprojectID, ProjectUpdateParams { avatarAssetId, description, disableIpDetection, 5 more } body, RequestOptionsoptions?): ProjectUpdateResponse { project }
PUT/projects/{projectId}
ModelsExpand Collapse
ProjectCreateResponse { project }
project: Project { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

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

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

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

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

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

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

ProjectsAPI Keys

Create
client.projects.apiKeys.create(stringprojectID, APIKeyCreateParams { maxConsumption, name, role } body, RequestOptionsoptions?): APIKeyCreateResponse { id, authorId, createdAt, 5 more }
POST/projects/{projectId}/api-keys
Delete
client.projects.apiKeys.delete(stringkeyID, APIKeyDeleteParams { projectId } params, RequestOptionsoptions?): APIKeyDeleteResponse
DELETE/projects/{projectId}/api-keys/{keyId}
ModelsExpand Collapse
APIKeyCreateResponse { id, authorId, createdAt, 5 more }
id: string
authorId: string
createdAt: string
ownerType: "project" | "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?: string
teamId?: string
APIKeyDeleteResponse = unknown

ProjectsBrief

Delete
client.projects.brief.delete(stringprojectID, RequestOptionsoptions?): BriefDeleteResponse { deleted }
DELETE/projects/{projectId}/brief
Retrieve
client.projects.brief.retrieve(stringprojectID, RequestOptionsoptions?): BriefRetrieveResponse { brief }
GET/projects/{projectId}/brief
Update
client.projects.brief.update(stringprojectID, BriefUpdateParams { body, enabled, referenceAssetIds, sensitivity } body, RequestOptionsoptions?): BriefUpdateResponse { brief }
PUT/projects/{projectId}/brief
ModelsExpand Collapse
BriefDeleteResponse { deleted }
deleted: boolean
BriefRetrieveResponse { brief }
brief: Brief { 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" | "team"

Scope this brief applies to: team or project

One of the following:
"project"
"team"
referenceAssetIds: Array<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?: "high" | "low" | "medium"

Threshold strictness applied when verifying against this scope

One of the following:
"high"
"low"
"medium"
BriefUpdateResponse { brief }
brief: Brief { 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" | "team"

Scope this brief applies to: team or project

One of the following:
"project"
"team"
referenceAssetIds: Array<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?: "high" | "low" | "medium"

Threshold strictness applied when verifying against this scope

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

ProjectsInstructions

Retrieve
client.projects.instructions.retrieve(stringprojectID, RequestOptionsoptions?): InstructionRetrieveResponse { memory }
GET/projects/{projectId}/instructions
Update
client.projects.instructions.update(stringprojectID, InstructionUpdateParams { content } body, RequestOptionsoptions?): InstructionUpdateResponse { memory }
PUT/projects/{projectId}/instructions
ModelsExpand Collapse
InstructionRetrieveResponse { memory }
memory: Memory { 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 { memory }
memory?: Memory { 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
client.projects.members.create(stringprojectID, MemberCreateParams { role, userId } body, RequestOptionsoptions?): MemberCreateResponse { project }
POST/projects/{projectId}/members
Delete
client.projects.members.delete(stringmemberID, MemberDeleteParams { projectId } params, RequestOptionsoptions?): MemberDeleteResponse { project }
DELETE/projects/{projectId}/members/{memberId}
Update
client.projects.members.update(stringmemberID, MemberUpdateParams { projectId, role } params, RequestOptionsoptions?): MemberUpdateResponse { project }
PUT/projects/{projectId}/members/{memberId}
ModelsExpand Collapse
MemberCreateResponse { project }
project: Project { id, createdAt, keys, 13 more }
id: string

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

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

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

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

The project ID (example: “project_eyVcnFJcR92BxBkz7N6g5w”)

createdAt: string
keys: Array<Key>

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" | "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" | "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?: string

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

consumption?: number

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

lastUsedAt?: 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?: 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?: string

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

projects?: Array<Project>

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<User>

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?: Avatar { assetId, url }

The user’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

maxConsumption?: 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?: Avatar { assetId, url }

The project’s avatar

assetId?: string

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

url?: string

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

consumption?: number

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

description?: string

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

descriptionDate?: string

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

disableIpDetection?: 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?: number

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

qualityGateAutoDetect?: boolean

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

settings?: Settings { homepage }

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

homepage?: Record<string, unknown>

Published homepage layout.

ProjectsMemory

Retrieve
client.projects.memory.retrieve(stringprojectID, RequestOptionsoptions?): MemoryRetrieveResponse { memory }
GET/projects/{projectId}/memory
Update
client.projects.memory.update(stringprojectID, MemoryUpdateParams { content } body, RequestOptionsoptions?): MemoryUpdateResponse { memory }
PUT/projects/{projectId}/memory
ModelsExpand Collapse
MemoryRetrieveResponse { memory }
memory: Memory { 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 { memory }
memory?: Memory { 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
client.projects.watermark.delete(stringprojectID, RequestOptionsoptions?): WatermarkDeleteResponse { deleted }
DELETE/projects/{projectId}/watermark
Delete Logo
client.projects.watermark.deleteLogo(stringprojectID, RequestOptionsoptions?): WatermarkDeleteLogoResponse { watermark }
DELETE/projects/{projectId}/watermark/logo
Preview
client.projects.watermark.preview(stringprojectID, WatermarkPreviewParams { opacity, placement, rotation, 3 more } body, RequestOptionsoptions?): WatermarkPreviewResponse { image }
POST/projects/{projectId}/watermark/preview
Retrieve
client.projects.watermark.retrieve(stringprojectID, RequestOptionsoptions?): WatermarkRetrieveResponse { watermark }
GET/projects/{projectId}/watermark
Update
client.projects.watermark.update(stringprojectID, WatermarkUpdateParams { enabled, opacity, placement, 4 more } body, RequestOptionsoptions?): WatermarkUpdateResponse { watermark }
PUT/projects/{projectId}/watermark
Update Logo
client.projects.watermark.updateLogo(stringprojectID, WatermarkUpdateLogoParams { logo } body, RequestOptionsoptions?): WatermarkUpdateLogoResponse { watermark }
PUT/projects/{projectId}/watermark/logo
ModelsExpand Collapse
WatermarkDeleteResponse { deleted }
deleted: boolean
WatermarkDeleteLogoResponse { watermark }
watermark: Watermark { 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" | "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" | "bottom-right" | "center" | 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?: string

Set when the configuration has been deleted.

logoIsOpaque?: 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?: string

Where the uploaded logo lives, when one is set.

text?: string

Text rendered as the mark, when no logo is set

WatermarkPreviewResponse { image }

Response of the watermark preview routes.

image: string

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

WatermarkRetrieveResponse { watermark }
watermark: Watermark { 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" | "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" | "bottom-right" | "center" | 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?: string

Set when the configuration has been deleted.

logoIsOpaque?: 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?: string

Where the uploaded logo lives, when one is set.

text?: string

Text rendered as the mark, when no logo is set

WatermarkUpdateResponse { watermark }
watermark: Watermark { 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" | "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" | "bottom-right" | "center" | 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?: string

Set when the configuration has been deleted.

logoIsOpaque?: 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?: string

Where the uploaded logo lives, when one is set.

text?: string

Text rendered as the mark, when no logo is set

WatermarkUpdateLogoResponse { watermark }
watermark: Watermark { 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" | "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" | "bottom-right" | "center" | 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?: string

Set when the configuration has been deleted.

logoIsOpaque?: 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?: string

Where the uploaded logo lives, when one is set.

text?: string

Text rendered as the mark, when no logo is set

ProjectsWebhook Endpoints

Create
client.projects.webhookEndpoints.create(stringprojectID, WebhookEndpointCreateParams { enabledEvents, url, description } body, RequestOptionsoptions?): WebhookEndpointCreateResponse { webhookEndpoint }
POST/projects/{projectId}/webhook-endpoints
Delete
client.projects.webhookEndpoints.delete(stringwebhookEndpointID, WebhookEndpointDeleteParams { projectId } params, RequestOptionsoptions?): WebhookEndpointDeleteResponse
DELETE/projects/{projectId}/webhook-endpoints/{webhookEndpointId}
List
client.projects.webhookEndpoints.list(stringprojectID, RequestOptionsoptions?): WebhookEndpointListResponse { webhookEndpoints }
GET/projects/{projectId}/webhook-endpoints
Update
client.projects.webhookEndpoints.update(stringwebhookEndpointID, WebhookEndpointUpdateParams { projectId, description, enabled, 2 more } params, RequestOptionsoptions?): WebhookEndpointUpdateResponse { webhookEndpoint }
PUT/projects/{projectId}/webhook-endpoints/{webhookEndpointId}
ModelsExpand Collapse
WebhookEndpointCreateResponse { webhookEndpoint }
webhookEndpoint: WebhookEndpoint { 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<"*" | "asset.download.completed" | "asset.download.created" | 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" | "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?: string

A description of the webhook endpoint

WebhookEndpointDeleteResponse = unknown
WebhookEndpointListResponse { webhookEndpoints }
webhookEndpoints: Array<WebhookEndpoint>

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<"*" | "asset.download.completed" | "asset.download.created" | 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" | "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?: string

A description of the webhook endpoint

WebhookEndpointUpdateResponse { webhookEndpoint }
webhookEndpoint: WebhookEndpoint { 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<"*" | "asset.download.completed" | "asset.download.created" | 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" | "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?: string

A description of the webhook endpoint

ProjectsWebhook EndpointsEvents

List
client.projects.webhookEndpoints.events.list(stringwebhookEndpointID, EventListParams { projectId, paginationToken } params, RequestOptionsoptions?): EventListResponse { items, nextPaginationToken }
GET/projects/{projectId}/webhook-endpoints/{webhookEndpointId}/events
Retrieve
client.projects.webhookEndpoints.events.retrieve(stringeventID, EventRetrieveParams { projectId, webhookEndpointId } params, RequestOptionsoptions?): EventRetrieveResponse { webhookEvent }
GET/projects/{projectId}/webhook-endpoints/{webhookEndpointId}/events/{eventId}
ModelsExpand Collapse
EventListResponse { items, nextPaginationToken }
items: Array<Item>

A list of the project webhook events

id: string
endpointId: string
status: "created" | "failed" | "retrying" | "success"
One of the following:
"created"
"failed"
"retrying"
"success"
type: "*" | "asset.download.completed" | "asset.download.created" | 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?: string

A token to query the next page of events

EventRetrieveResponse { webhookEvent }
webhookEvent: WebhookEvent { id, attempts, createdAt, 6 more }
id: string
attempts: Array<Attempt>
responseStatusCode: number
sentAt: string
createdAt: string
endpointId: string
payload: unknown
sentAt: string
status: "created" | "failed" | "retrying" | "success"
One of the following:
"created"
"failed"
"retrying"
"success"
type: "*" | "asset.download.completed" | "asset.download.created" | 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