artifact.list
Lists generated task artifacts from the authenticated user’s Manus Library. This is separate from temporary input files managed by file.upload. Results are ordered by creation time descending, including name searches. Source filters and task_id refer to the owned original creation task.
file.upload.
Filters
All filters are combined with AND semantics.oauth_client_id and api_key_id are mutually exclusive. Passing both returns 400 invalid_argument. OAuth apps with only create_task are already limited to their own app’s tasks: filtering by api_key_id or by another app’s oauth_client_id returns 403 permission_denied.
When neither credential filter is present, API keys, OAuth apps with manage_all_tasks, and trusted OAuth clients can list all artifacts owned by the user, including outputs from Manus UI tasks. Restricted OAuth apps with only create_task always have an implicit source filter for their own app, even when neither parameter is sent.
Credential-filtered lists may omit older artifacts that lack indexed source metadata. This also applies to the implicit filter for restricted create_task OAuth apps; omitting the filter parameters does not make those artifacts accessible to that app. An unfiltered request with an API key, manage_all_tasks, or a trusted OAuth client can still return these artifacts. Historical source metadata is not backfilled as part of this release.
Artifact categories
all for the same indexed data and access scope. Each response item’s type is the category used by the filter; all is only a request value. Classification uses the indexed Library file type and extension, rather than the current filename or platform_type returned with the artifact.
Website, WebDev, and Slides classification takes precedence over extension-based categories: a Slides record with a pdf extension remains slides, and a WebDev record with an unrecognized indexed platform extension belongs to others. The format list does not guarantee that an agent can generate every listed format.
For example, list generated spreadsheets:
URLs and resources
- Downloadable artifacts return
url. - Website and WebDev artifacts can return a site URL. An unpublished WebDev artifact can have no URL.
- Mobile WebDev artifacts can return an application
logowhen one is available. - Addon artifacts return
resource_uriinstead of exposing an internalmanus-resource://value as a download URL. task_idand credential filters refer to the artifact’s original creation task, not its most recent editing task. Only artifacts with an active creation task owned by the authenticated user are returned; collaboration access alone does not include a task.- Credential IDs come from the creation-time record. Deleting an API key does not erase that ID; its display name may be absent.
sourceis omitted when no API key or OAuth client ID can be attributed to the creation task. This includes UI-created tasks and API-created tasks without recorded credential IDs. An omittedsourcedoes not imply that the task was created in the UI.
slides_format=pptx.
Pagination and ordering
Results are ordered by creation time descending, with stable identifier tie-breakers. Name searches use the same ordering. Pagination has no 10,000-result offset window. Whenhas_more is true, pass next_cursor to the next request with the same authenticated user, credential scope, filters, and limit. A cursor from another query is rejected. Treat cursors as opaque; restart without a cursor when changing the query.
A page may contain fewer than limit artifacts, or even be empty, while has_more is true: deleted, blocked, inaccessible, and duplicate search hits are removed before returning results. Continue until has_more is false. A dependency failure returns an error; retry the same request and cursor rather than advancing.
Within one traversal, an artifact is returned at most once by id and by nonempty resource_uri, even when it has projections in several tasks. Retrying a retained cursor replays that page and rechecks current access; apply the replay as a replacement for that page. If combining separate traversals, deduplicate by resource_uri when present, otherwise by id.
Cursors expire after 5 minutes without use or 15 minutes from the start of the traversal. Only the latest 3 produced pages remain replayable. Each user can retain up to 32 traversals; opening more evicts the least recently used one. An expired, evicted, or older cursor returns 400 invalid_argument; restart without a cursor. A traversal is limited to 2,000 pages and bounded server state; exceeding capacity returns 429 resource_exhausted, not an end-of-list response. Refine the query before restarting.
This is a live list, not a snapshot. New artifacts created after the first page normally appear on a fresh traversal. Changes to an artifact’s sort position or visibility during traversal can change which items are returned.
Manus-managed private CDN URLs in url and cover_image pass through the same re-signing path used by Manus Library whenever this endpoint builds a response. A successful re-sign creates a URL with a 48-hour lifetime. Treat signed URLs as temporary and call artifact.list again instead of storing one as a permanent artifact identifier. Re-signing is best-effort: if the signing service is unavailable, the stored URL is returned unchanged and can already be expired. Website URLs do not use this expiry, and Addon artifacts use resource_uri.
Errors
Headers
API key for direct authentication. Provide either this or Authorization, not both.
OAuth2 access token. Requires create_task or manage_all_tasks unless the client is trusted. Restricted create_task clients are always filtered to their own app, even without explicit source filters; older artifacts without indexed source metadata may be omitted. Provide either this or x-manus-api-key, not both.
"Bearer {access_token}"
Query Parameters
Maximum artifacts per page. Pages may be short or empty while has_more is true.
1 <= x <= 100Opaque next_cursor from the previous page. Keep the user, credential scope, filters, and limit unchanged. Continue until has_more is false; IDs and Addon resources are deduplicated across this live traversal. Cursors expire after 5 minutes idle or 15 minutes total. Only the latest 3 produced pages can be replayed; replace that page when retrying. Expired or evicted cursors return 400 invalid_argument. Traversal capacity returns 429 resource_exhausted; refine the query and restart.
Search the artifact display name.
Filter by indexed Manus Library artifact category. The ten specific categories are mutually exclusive and together cover all for the same indexed data and access scope. Website, WebDev, and Slides classification takes precedence over extension-based categories. Response type uses the same classification.
all, website, mobile_app, game, documents, slides, spreadsheets, images, videos, audio, others "spreadsheets"
When true, return only favorited artifacts. Omit or pass false for no favorite filter.
Filter by the Open App that created the source task. Mutually exclusive with api_key_id. Restricted create_task OAuth clients always have this filter applied for their own app and cannot select another app. Older artifacts without indexed source metadata may be omitted, including when this filter is implicit.
Filter by the API key that created the source task. Mutually exclusive with oauth_client_id. Unavailable to restricted create_task OAuth clients. Older artifacts without indexed source metadata may be omitted.
Response
Artifacts retrieved successfully.
Whether the request was successful.
true
Unique identifier for this API request.
Array of generated artifacts matching the filters.
Whether more artifacts are available.
Cursor for the next page. Present only when has_more is true.