# Luma Labs — MCP server on mcp.ai > Connect your Luma Labs account and use 11 tools for artificial intelligence straight from your AI agent. Connect with your own API key. Create and manage AI image and video generations and reusable files through the current Luma Agents API. By: mcp.ai · official Page: https://mcp.ai/luma_labs ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_luma_labs?ms=1787293680000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/luma_labs/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/luma_labs/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/luma_labs/skill.md Postman collection (v2.1): https://mcp.ai/luma_labs/postman.json ## Tools - luma_labs_delete_file(file_id: string) — Soft-delete a Luma file so new generations cannot reference it. The file's metadata remains retrievable with state=deleted. - luma_labs_edit_image(model?: string, style?: string, prompt: string, source: object, user_id?: string, image_ref?: object[], web_search?: boolean, output_format?: string) — Submit a paid, asynchronous Luma image-edit job. Returns immediately; use GET_GENERATION with generation_id to monitor it. - luma_labs_edit_video(video?: object, prompt: string, source: object, user_id?: string, web_search?: boolean) — Submit a paid, asynchronous Ray 3.2 video-edit job. Returns immediately; use GET_GENERATION with generation_id to monitor it. - luma_labs_extract_image_layers(prompt: string, source: object, user_id?: string, layering?: object) — Submit a paid, asynchronous Luma image layer-extraction job. Pricing is flat per generation at the selected resolution, regardless of layer count; use GET_GENERATION with generation_id to monitor the - luma_labs_generate_image(model?: string, style?: string, prompt: string, user_id?: string, image_ref?: object[], web_search?: boolean, aspect_ratio?: string, output_format?: string) — Submit a paid, asynchronous Luma image generation job. Returns immediately; use GET_GENERATION with generation_id to monitor it. - luma_labs_generate_video(video?: object, prompt: string, user_id?: string, web_search?: boolean, aspect_ratio?: string) — Submit a paid, asynchronous Ray 3.2 video generation job. Returns immediately; use GET_GENERATION with generation_id to monitor it. - luma_labs_get_file(file_id: string) — Get a Luma file's metadata and current ingest, moderation, or deletion state. Soft-deleted files remain retrievable with state=deleted. - luma_labs_get_generation(generation_id: string) — Get the current state, failure details, and output URLs for a Luma generation. - luma_labs_list_files(limit?: integer, state?: string, cursor?: string, purpose?: string) — List files in the connected Luma account, newest first, with optional state and purpose filters. Returns one page and a cursor for continuation. - luma_labs_reframe_video(video?: object, prompt: string, source: object, user_id?: string, web_search?: boolean, aspect_ratio: string) — Submit a paid, asynchronous Ray 3.2 video-reframe job. Returns immediately; use GET_GENERATION with generation_id to monitor it. - luma_labs_upload_file(file: object, purpose?: string, user_id?: string, expires_at?: string) — Directly upload file bytes to Luma and return the file ID, metadata, and current upload/ingest state. ## Example prompts - "What can I do in Luma Labs?" - "Show me a summary of my Luma Labs account" ## Links Docs: https://mcp.ai/docs/mcps/luma_labs Website: https://mcp.ai/mcps/luma_labs