> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - If a reference page seems to be missing its schema (parameters, return types, or type definitions), append `?schema=true` to its `.md` URL (e.g. `https://dev.wix.com/docs/contexts/contexts/stores/category-info/use-category-info-context.md?schema=true`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# ListProjects

# Package: containersProjects

# Namespace: ContainersProjects

# Method link: https://dev.wix.com/docs/api-reference/mobile/containers-app/containers-projects/project-v1/list-projects.md

## Permission Scopes:
Manage AppSmith Projects: SCOPE.CONTAINERS.PROJECTS

## Introduction

Retrieves the projects of the current site, regardless of who created them.

Projects of other sites in the same account aren't included.

---

## REST API

### Schema

```
 Method: listProjects
 Description: Retrieves the projects of the current site, regardless of who created them.  Projects of other sites in the same account aren't included.
 URL: https://www.wixapis.com/containers/projects/v1/projects
 Method: GET
 Method parameters:
   param name: paging | type: CursorPaging    
        - name: limit | type: integer | description: Maximum number of items to return in the results.  | validation: minimum 0, maximum 100, format int32
        - name: cursor | type: string | description: Pointer to the next or previous page in the list of results.  Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response. Not relevant for the first request.  | validation: maxLength 16000
 Return type: ListProjectsResponse
  - name: projects | type: array<Project> | description: Projects of the current site.  
     - name: id | type: string | description: Project GUID.  | read-only: true | validation: format GUID
     - name: name | type: string | description: Project name, shown to the user.  | validation: maxLength 200
     - name: status | type: ProjectStatus | description: Project status.  
         - enum:
         -     PLANNING: The user and the coding agent are planning the app. New projects start with this status.
         -     BUILDING: The coding agent is building the app, or has built it. The user can continue to request changes.
         -     PLAN_READY: The plan is finalized, and the first build of the app is about to start.
     - name: templateId | type: string | description: GUID of the template that the project was created from.  | validation: format GUID, immutable
     - name: codeStoreProjectId | type: string | description: GUID of the project's source code project. Set automatically when the project is created.  | read-only: true | validation: format GUID
     - name: ownerUserId | type: string | description: GUID of the user who created the project.  | read-only: true | validation: format GUID
     - name: revision | type: string | description: Revision number, which increments by 1 each time the project is updated. To prevent conflicting changes, the current revision must be passed when updating the project.  Ignored when creating a project.  | read-only: true | validation: format int64
     - name: createdDate | type: string | description: Date and time the project was created.  | read-only: true | validation: format date-time
     - name: updatedDate | type: string | description: Date and time the project was last updated.  | read-only: true | validation: format date-time
     - name: sandboxStatus | type: SandboxStatus | description: Whether a remote development environment is being created for the project.  | read-only: true 
         - enum:
         -     NONE: No remote development environment is being created.
         -     CREATING: A remote development environment is being created.
     - name: metaSiteIds | type: array<string> | description: IDs of the Wix sites that the project relates to.  A project can relate to any number of sites, including none.  | validation: format GUID
     - name: platform | type: Platform | description: Platform that the project's app targets. Set when the project is created and can't be changed.  | validation: immutable
         - enum:
         -     IOS: Native iOS app. Used by older projects.
         -     ANDROID: Native Android app. Used by older projects.
         -     HIMALAYA_MOBILE: Mobile app built from content that's updated over the air, instead of native iOS or Android code. Most new projects use this platform.
     - name: appIconUrl | type: string | description: URL of the app's icon.  | validation: maxLength 2000
     - name: headReleaseId | type: string | description: GUID of the release that the project is currently on.  Your app previews this release, and the next design save or edit by the coding agent branches from it. Set automatically after each design save or edit, and by [Restore Release](https://dev.wix.com/docs/api-reference/mobile/containers-app/containers-projects/project-v1/restore-release.md). When empty, the project is on its newest release.  | read-only: true | validation: maxLength 200
     - name: oneAppMigration | type: OneAppMigration | description: Migration details of the project.  Returned only for projects that were created by a migration.  | read-only: true 
        - name: state | type: OneAppMigrationState | description: Migration state.  
             - enum:
             -     DRAFT: The migrated project is a draft that isn't offered to the site owner yet.
             -     OFFERED: The migrated project is offered to the site owner.
             -     ACCEPTED: The site owner accepted the migrated project.
        - name: offeredReleaseId | type: string | description: GUID of the release that was offered to the site owner.  Returned only when `state` is `OFFERED` or `ACCEPTED`.  | validation: maxLength 200
        - name: sourceMetaSiteId | type: string | description: GUID of the Wix site that the project was migrated from.  | validation: format GUID
        - name: activeJobId | type: string | description: GUID of the migration job that's currently running.  | validation: format GUID
        - name: activeBaseReleaseId | type: string | description: GUID of the release that the running migration job started from.  | validation: maxLength 200
        - name: offerReserved | type: boolean | description: Whether the migrated project is reserved to be offered to the site owner.  
        - name: workerWriteDrainUntil | type: string | description: Date and time until which a running migration job can still write to the project.  | validation: format date-time
        - name: activeJobType | type: string | description: Type of the migration job that's currently running.  | validation: maxLength 50
        - name: activeRequestId | type: string | description: GUID of the request that started the running migration job.  | validation: format GUID
        - name: activeRequestFingerprint | type: string | description: Fingerprint of the request that started the running migration job.  | validation: maxLength 64
        - name: activeRetryOfJobId | type: string | description: GUID of the earlier migration job that the running job retries.  | validation: format GUID
        - name: verifiedReleaseId | type: string | description: GUID of the release that the last migration job produced and that was verified.  | validation: maxLength 200
        - name: activeDeveloperEmailSha256 | type: string | description: Hash of the email address of the developer who started the running migration job.  | validation: maxLength 64
        - name: startupFailedAt | type: string | description: Date and time the migration failed to start.  Returned only when the migration failed before its first job was recorded.  | read-only: true | validation: format date-time
        - name: deletion | type: OneAppMigrationDeletion | description: Deletion of the migrated project. Returned once a deletion starts, and kept after a failed attempt: a deletion request with the same `requestId` resumes it. While it's returned, the migration can't change.  | read-only: true 
           - name: requestId | type: string | description: GUID of the request that started the deletion.  | validation: format GUID
           - name: status | type: string | description: Deletion status: `DELETING` while the deletion runs, or `FAILED` after an attempt failed. Deletions started before failures were resumable can have `BLOCKED`, which means the same as `FAILED`.  | validation: maxLength 40
           - name: stage | type: string | description: Last step of the deletion that completed. A failed deletion keeps the last step it completed, and a resumed deletion continues from it.  | validation: maxLength 50
           - name: himalayaAppId | type: string | description: GUID of the project's app in the build system.  | validation: maxLength 200
           - name: bindingId | type: string | description: GUID of the binding between the project and its app.  | validation: maxLength 200
           - name: canonicalApp | type: string | description: Canonical slug of the project's app.  | validation: maxLength 200
           - name: devCenterAppId | type: string | description: GUID of the project's app in the app dashboard.  | validation: format GUID
           - name: leaseUntil | type: string | description: Date and time until which the current deletion attempt holds the project.  | validation: format date-time
           - name: executorId | type: string | description: GUID of the deletion attempt that holds the lease until `leaseUntil`. Each attempt gets a new GUID.  | validation: format GUID
           - name: errorCode | type: string | description: Code of the error that stopped the deletion, when it failed.  | validation: maxLength 100
           - name: startedAt | type: string | description: Date and time the deletion started.  | validation: format date-time
           - name: ownerUserId | type: string | description: Verified customer owner at reservation time; preserved across later ownership changes.  | read-only: true | validation: format GUID
        - name: startRequestIds | type: array<string> | description: IDs of the requests that started the migration, including attempts that failed.  | read-only: true | validation: maxItems 1000, format GUID
  - name: pagingMetadata | type: CursorPagingMetadata | description: Paging metadata.  
     - name: count | type: integer | description: Number of items returned in current page.  | validation: format int32
     - name: cursors | type: Cursors | description: Cursor strings that point to the next page, previous page, or both.  
        - name: next | type: string | description: Cursor string pointing to the next page in the list of results.  | validation: maxLength 16000
        - name: prev | type: string | description: Cursor pointing to the previous page in the list of results.  | validation: maxLength 16000
     - name: hasNext | type: boolean | description: Whether there are more pages to retrieve following the current page.  + `true`: Another page of results can be retrieved. + `false`: This is the last page.  


```

### Examples

### List Projects
Lists the projects of the current site, regardless of who created them.

```curl
curl -X GET \
'https://www.wixapis.com/containers/projects/v1/projects' \
-H 'Authorization: <AUTH>'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.containers.projects.listProjects(options)
 Description: Retrieves the projects of the current site, regardless of who created them.  Projects of other sites in the same account aren't included.
 Method parameters:
   param name: options | type: ListProjectsOptions  none  
        - name: paging | type: CursorPaging | description: Cursor paging options.  
           - name: limit | type: integer | description: Maximum number of items to return in the results.  | validation: minimum 0, maximum 100, format int32
           - name: cursor | type: string | description: Pointer to the next or previous page in the list of results.  Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response. Not relevant for the first request.  | validation: maxLength 16000
 Return type: PROMISE<ListProjectsResponse>
  - name: projects | type: array<Project> | description: Projects of the current site.  
     - name: _id | type: string | description: Project GUID.  | read-only: true | validation: format GUID
     - name: name | type: string | description: Project name, shown to the user.  | validation: maxLength 200
     - name: status | type: ProjectStatus | description: Project status.  
         - enum:
         -     PLANNING: The user and the coding agent are planning the app. New projects start with this status.
         -     BUILDING: The coding agent is building the app, or has built it. The user can continue to request changes.
         -     PLAN_READY: The plan is finalized, and the first build of the app is about to start.
     - name: templateId | type: string | description: GUID of the template that the project was created from.  | validation: format GUID, immutable
     - name: codeStoreProjectId | type: string | description: GUID of the project's source code project. Set automatically when the project is created.  | read-only: true | validation: format GUID
     - name: ownerUserId | type: string | description: GUID of the user who created the project.  | read-only: true | validation: format GUID
     - name: revision | type: string | description: Revision number, which increments by 1 each time the project is updated. To prevent conflicting changes, the current revision must be passed when updating the project.  Ignored when creating a project.  | read-only: true | validation: format int64
     - name: _createdDate | type: Date | description: Date and time the project was created.  | read-only: true 
     - name: _updatedDate | type: Date | description: Date and time the project was last updated.  | read-only: true 
     - name: sandboxStatus | type: SandboxStatus | description: Whether a remote development environment is being created for the project.  | read-only: true 
         - enum:
         -     NONE: No remote development environment is being created.
         -     CREATING: A remote development environment is being created.
     - name: metaSiteIds | type: array<string> | description: IDs of the Wix sites that the project relates to.  A project can relate to any number of sites, including none.  | validation: format GUID
     - name: platform | type: Platform | description: Platform that the project's app targets. Set when the project is created and can't be changed.  | validation: immutable
         - enum:
         -     IOS: Native iOS app. Used by older projects.
         -     ANDROID: Native Android app. Used by older projects.
         -     HIMALAYA_MOBILE: Mobile app built from content that's updated over the air, instead of native iOS or Android code. Most new projects use this platform.
     - name: appIconUrl | type: string | description: URL of the app's icon.  | validation: maxLength 2000
     - name: headReleaseId | type: string | description: GUID of the release that the project is currently on.  Your app previews this release, and the next design save or edit by the coding agent branches from it. Set automatically after each design save or edit, and by [Restore Release](https://dev.wix.com/docs/api-reference/mobile/containers-app/containers-projects/project-v1/restore-release.md). When empty, the project is on its newest release.  | read-only: true | validation: maxLength 200
     - name: oneAppMigration | type: OneAppMigration | description: Migration details of the project.  Returned only for projects that were created by a migration.  | read-only: true 
        - name: state | type: OneAppMigrationState | description: Migration state.  
             - enum:
             -     DRAFT: The migrated project is a draft that isn't offered to the site owner yet.
             -     OFFERED: The migrated project is offered to the site owner.
             -     ACCEPTED: The site owner accepted the migrated project.
        - name: offeredReleaseId | type: string | description: GUID of the release that was offered to the site owner.  Returned only when `state` is `OFFERED` or `ACCEPTED`.  | validation: maxLength 200
        - name: sourceMetaSiteId | type: string | description: GUID of the Wix site that the project was migrated from.  | validation: format GUID
        - name: activeJobId | type: string | description: GUID of the migration job that's currently running.  | validation: format GUID
        - name: activeBaseReleaseId | type: string | description: GUID of the release that the running migration job started from.  | validation: maxLength 200
        - name: offerReserved | type: boolean | description: Whether the migrated project is reserved to be offered to the site owner.  
        - name: workerWriteDrainUntil | type: Date | description: Date and time until which a running migration job can still write to the project.  
        - name: activeJobType | type: string | description: Type of the migration job that's currently running.  | validation: maxLength 50
        - name: activeRequestId | type: string | description: GUID of the request that started the running migration job.  | validation: format GUID
        - name: activeRequestFingerprint | type: string | description: Fingerprint of the request that started the running migration job.  | validation: maxLength 64
        - name: activeRetryOfJobId | type: string | description: GUID of the earlier migration job that the running job retries.  | validation: format GUID
        - name: verifiedReleaseId | type: string | description: GUID of the release that the last migration job produced and that was verified.  | validation: maxLength 200
        - name: activeDeveloperEmailSha256 | type: string | description: Hash of the email address of the developer who started the running migration job.  | validation: maxLength 64
        - name: startupFailedAt | type: Date | description: Date and time the migration failed to start.  Returned only when the migration failed before its first job was recorded.  | read-only: true 
        - name: deletion | type: OneAppMigrationDeletion | description: Deletion of the migrated project. Returned once a deletion starts, and kept after a failed attempt: a deletion request with the same `requestId` resumes it. While it's returned, the migration can't change.  | read-only: true 
           - name: requestId | type: string | description: GUID of the request that started the deletion.  | validation: format GUID
           - name: status | type: string | description: Deletion status: `DELETING` while the deletion runs, or `FAILED` after an attempt failed. Deletions started before failures were resumable can have `BLOCKED`, which means the same as `FAILED`.  | validation: maxLength 40
           - name: stage | type: string | description: Last step of the deletion that completed. A failed deletion keeps the last step it completed, and a resumed deletion continues from it.  | validation: maxLength 50
           - name: himalayaAppId | type: string | description: GUID of the project's app in the build system.  | validation: maxLength 200
           - name: bindingId | type: string | description: GUID of the binding between the project and its app.  | validation: maxLength 200
           - name: canonicalApp | type: string | description: Canonical slug of the project's app.  | validation: maxLength 200
           - name: devCenterAppId | type: string | description: GUID of the project's app in the app dashboard.  | validation: format GUID
           - name: leaseUntil | type: Date | description: Date and time until which the current deletion attempt holds the project.  
           - name: executorId | type: string | description: GUID of the deletion attempt that holds the lease until `leaseUntil`. Each attempt gets a new GUID.  | validation: format GUID
           - name: errorCode | type: string | description: Code of the error that stopped the deletion, when it failed.  | validation: maxLength 100
           - name: startedAt | type: Date | description: Date and time the deletion started.  
           - name: ownerUserId | type: string | description: Verified customer owner at reservation time; preserved across later ownership changes.  | read-only: true | validation: format GUID
        - name: startRequestIds | type: array<string> | description: IDs of the requests that started the migration, including attempts that failed.  | read-only: true | validation: maxItems 1000, format GUID
  - name: pagingMetadata | type: CursorPagingMetadata | description: Paging metadata.  
     - name: count | type: integer | description: Number of items returned in current page.  | validation: format int32
     - name: cursors | type: Cursors | description: Cursor strings that point to the next page, previous page, or both.  
        - name: next | type: string | description: Cursor string pointing to the next page in the list of results.  | validation: maxLength 16000
        - name: prev | type: string | description: Cursor pointing to the previous page in the list of results.  | validation: maxLength 16000
     - name: hasNext | type: boolean | description: Whether there are more pages to retrieve following the current page.  + `true`: Another page of results can be retrieved. + `false`: This is the last page.  


```

### Examples

### List projects on the current site
```javascript
import { projects } from "@wix/containers";

async function listProjects() {
  const response = await projects.listProjects({
    paging: { limit: 50 },
  });
}

/* Promise resolves to:
 * {
 *   "projects": [
 *     {
 *       "_id": "6b2e9d4a-1c7f-4a35-8e0b-5d3f7a9c2e18",
 *       "name": "Ridge Coffee Roasters",
 *       "status": "BUILDING",
 *       "templateId": "2f7c4e91-8a3d-4b6e-9c05-1d8a6f3e7b42",
 *       "ownerUserId": "c8e1f5a3-6b2d-4f9e-a7c4-3e0b9d6f1a58",
 *       "revision": "4",
 *       "_createdDate": "2026-11-09T09:32:20.000Z",
 *       "_updatedDate": "2026-11-09T11:20:05.000Z",
 *       "sandboxStatus": "NONE",
 *       "metaSiteIds": ["e5a9c3f7-1d4b-4e82-b6f0-7c2a8e4d9b13"],
 *       "platform": "HIMALAYA_MOBILE",
 *       "appIconUrl": "https://static.wixstatic.com/media/a1f3c7_5e9b2d4f8c6a4e1b9d3f7a2c5e8b0d61~mv2.png",
 *       "headReleaseId": "rel-7a2d9e4c1b6f"
 *     }
 *   ],
 *   "pagingMetadata": {
 *     "count": 1,
 *     "cursors": {},
 *     "hasNext": false
 *   }
 * }
 */

```

### listProjects (self-managed)
Self-managed SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { projects } from '@wix/containers';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { projects },
  // Include the auth strategy and host as relevant
});


async function listProjects(options) {
  const response = await myWixClient.projects.listProjects(options);
};
```

---