{"id":"7c5abae7-44f5-4de1-a76f-cb35cb5b9b22","entityType":"agent","slug":"clawhub-wavespeed-wavespeed-face-swapper","name":"WaveSpeedAI Face Swapper","canonicalUrl":"https://www.xpersona.co/agent/clawhub-wavespeed-wavespeed-face-swapper","canonicalPath":"/agent/clawhub-wavespeed-wavespeed-face-swapper","generatedAt":"2026-10-11T08:39:50.647Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":null},"description":"Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face. Skill: WaveSpeedAI Face Swapper Owner: wavespeed Summary: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an ima","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17epnq4kcsv1261rq3e9gvwcx8dth5q:wavespeed-face-swapper","sourceUrl":"https://clawhub.ai/wavespeed/wavespeed-face-swapper","homepage":"https://clawhub.ai/wavespeed/skills/wavespeed-face-swapper","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/wavespeed/wavespeed-face-swapper","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/wavespeed/skills/wavespeed-face-swapper","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin ton"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":null},"stars":null,"forks":null,"downloads":1136,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T06:14:52.304Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T06:14:52.316Z","lastCrawledAt":"2026-10-11T06:14:52.304Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T06:14:52.304Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-09-05T16:30:30.655Z","changelog":"Moved to the @wavespeed organization.","fileCount":3,"zipByteSize":4475},{"version":"2.0.0","createdAt":"2026-09-05T16:17:35.933Z","changelog":"Examples switched from the JS SDK to the wavespeed CLI (with the @wavespeed/mcp server as the MCP alternative): install + login setup, @path local-file upload, price quotes, --json output. SDK-specific sections (sync mode, custom client, runNoThrow) removed.","fileCount":3,"zipByteSize":4672},{"version":"1.1.0","createdAt":"2026-09-05T16:09:04.276Z","changelog":"Add Responsible use section: consent, media rights, no impersonation or deception, no sexual content, no minors, disclosure. Drop 'watermark-free' framing.","fileCount":3,"zipByteSize":4343},{"version":"1.0.0","createdAt":"2026-03-02T06:42:23.748Z","changelog":"Initial release of wavespeed-face-swapper. - Swap faces in images and videos using WaveSpeed AI. - Supports targeting specific faces in multi-person images or videos. - Produces watermark-free results with automatic lighting and skin tone adaptation. - Provides both image and video face swap API endpoints with adjustable output format. - Includes advanced usage options: sync mode, custom client with retry configuration, and detailed error handling. - Priced at $0.01 per image and $0.01 per second for video (minimum $0.05, max 10 min).","fileCount":3,"zipByteSize":3575}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17epnq4kcsv1261rq3e9gvwcx8dth5q:wavespeed-face-swapper","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T08:39:50.646Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-wavespeed-wavespeed-face-swapper/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":null},"readme":"Skill: WaveSpeedAI Face Swapper\n\nOwner: wavespeed\n\nSummary: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face.\n\nTags: latest:2.0.1\n\nVersion history:\n\nv2.0.1 | 2026-09-05T16:30:30.655Z | user\n\nMoved to the @wavespeed organization.\n\nv2.0.0 | 2026-09-05T16:17:35.933Z | user\n\nExamples switched from the JS SDK to the wavespeed CLI (with the @wavespeed/mcp server as the MCP alternative): install + login setup, @path local-file upload, price quotes, --json output. SDK-specific sections (sync mode, custom client, runNoThrow) removed.\n\nv1.1.0 | 2026-09-05T16:09:04.276Z | user\n\nAdd Responsible use section: consent, media rights, no impersonation or deception, no sexual content, no minors, disclosure. Drop 'watermark-free' framing.\n\nv1.0.0 | 2026-03-02T06:42:23.748Z | user\n\nInitial release of wavespeed-face-swapper.\n\n- Swap faces in images and videos using WaveSpeed AI.\n- Supports targeting specific faces in multi-person images or videos.\n- Produces watermark-free results with automatic lighting and skin tone adaptation.\n- Provides both image and video face swap API endpoints with adjustable output format.\n- Includes advanced usage options: sync mode, custom client with retry configuration, and detailed error handling.\n- Priced at $0.01 per image and $0.01 per second for video (minimum $0.05, max 10 min).\n\nArchive index:\n\nArchive v2.0.1: 3 files, 4475 bytes\n\nFiles: skill-card.md (2159b), SKILL.md (7541b), _meta.json (141b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: wavespeed-face-swapper\ndescription: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face.\nmetadata:\n  author: wavespeedai\n  version: \"2.0\"\n---\n\n# WaveSpeedAI Face Swapper\n\nSwap faces in images and videos using WaveSpeed AI, with automatic lighting and skin tone adaptation. Supports targeting specific faces when multiple people are present.\n\n**Read [Responsible use](#responsible-use) before running anything.** Face swapping edits a real person's likeness; this skill is for consented, lawful, non-deceptive edits only.\n\n## Setup\n\nInstall the open-source CLI once and sign in; the CLI stores the key, so never ask the user to paste an API key into the chat:\n\n```bash\nnpm install -g @wavespeed/cli\nwavespeed login          # opens https://wavespeed.ai/accesskey and stores the key\nwavespeed status         # confirms you are signed in\n```\n\nFor CI or one-off shells, `WAVESPEED_API_KEY` in the environment also works.\n\nPrefer MCP tools over shell commands? The same platform is exposed by [`@wavespeed/mcp`](https://github.com/WaveSpeedAI/mcp-server) (`npx -y @wavespeed/mcp`; tools `search_models`, `get_model_schema`, `get_price`, `upload_file`, `run_model`, `get_prediction`). It shares the CLI's stored login. Every example below maps one-to-one onto `run_model` with the same model id and input fields.\n\n## Quick Start\n\n### Image Face Swap\n\n```bash\n# Upload local images to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./target-photo.png \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\n### Video Face Swap\n\n```bash\n# Upload local files to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\nExisting URLs work as-is:\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=\"https://example.com/target-photo.jpg\" \\\n  -i face_image=\"https://example.com/reference-face.jpg\" \\\n  --json | jq -r '.outputs[0]')\n```\n\n## API Endpoints\n\n### Image Face Swap\n\n**Model ID:** `wavespeed-ai/image-face-swap`\n\nReplace a face in an image with a reference face.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `image` | string | Yes | -- | URL of the image containing the face to replace |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n| `output_format` | string | No | `jpeg` | Output format. One of: `jpeg`, `png`, `webp` |\n\n#### Example\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=0 \\\n  -i output_format=\"png\" \\\n  --json | jq -r '.outputs[0]')\n```\n\n#### Targeting a Specific Face\n\nWhen multiple people are in the image, use `target_index` to select which face to replace:\n\n```bash\n# Replace the second-largest face in the image\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=1 \\\n  --json | jq -r '.outputs[0]')\n```\n\n### Video Face Swap\n\n**Model ID:** `wavespeed-ai/video-face-swap`\n\nReplace a face in a video with a reference face. Supports videos up to 10 minutes.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `video` | string | Yes | -- | URL of the video containing the face to replace. Must be publicly accessible. Max 10 minutes. |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n\n#### Example\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=0 \\\n  --json | jq -r '.outputs[0]')\n```\n\n\n## Pricing\n\n| Operation | Cost |\n|-----------|------|\n| Image face swap | $0.01 per image |\n| Video face swap | $0.01 per second (minimum $0.05 / 5 seconds) |\n\nVideo face swap supports videos up to 10 minutes.\n\n## Tips\n\n- Use clear, front-facing portraits for the reference face for best results\n- Consistent lighting between the target and reference face improves quality\n- Anime or illustrated characters may produce lower quality output\n- Use `target_index` to select specific faces when multiple people are present (0 = largest face)\n\n## Responsible use\n\nFace swapping manipulates a real person's likeness. Before calling either endpoint, confirm all of the following with the user. If any answer is no or unclear, do not run the model and explain why.\n\n- **Consent**: the person whose face is being inserted, and any identifiable person in the target media, has agreed to this use. Do not use the face of a public figure, a colleague, an ex-partner, or anyone else without their explicit consent.\n- **Rights to the media**: the user owns the target image or video or has permission from the owner to edit it.\n- **No impersonation or deception**: the output will not be presented as a real, unedited recording, used for fraud, identity verification bypass, harassment, defamation, political manipulation, or to put words or actions on someone they did not say or do.\n- **No sexual or intimate content**: never swap a face onto sexual, nude, or intimate material, regardless of consent claims.\n- **No minors**: do not process images or videos of children.\n- **Disclosure**: when the result will be shared, recommend labeling it as AI-edited.\n\nWaveSpeed's [Terms of Service](https://wavespeed.ai/static/terms) prohibit non-consensual and deceptive likeness edits; requests that violate them are refused and accounts may be suspended.\n\n## CLI tips\n\n```bash\n# Inspect the live input schema before running (fields, enums, defaults)\nwavespeed run wavespeed-ai/image-face-swap -h\n\n# Quote the price first\nwavespeed price wavespeed-ai/image-face-swap -p \"...\" -i key=value\n\n# Save outputs to disk instead of only printing URLs\nwavespeed run wavespeed-ai/image-face-swap -p \"...\" --json --download \"./out/{index}.{ext}\"\n\n# Local files: prefix the path with @ and the CLI uploads it and passes the hosted URL\nwavespeed run wavespeed-ai/image-face-swap -i <field>=@./local-file.png --json\n\n# Recover a result if the run was interrupted (the id is in the --json output)\nwavespeed show <id>\n```\n\n`run --json` prints `{ id, model, prompt, outputs: [url, ...], saved: [path, ...], elapsed_ms, raw }`. Read `outputs[0]` for the result URL.\n\n## Security constraints\n\n- **Never ask for the key in chat**: `wavespeed login` handles auth; if `wavespeed status` says signed out, ask the user to run it.\n- **Local files only via `@`**: bare paths are passed through untouched and the model will reject them. Only `@`-prefixed values upload.\n- **No arbitrary URL loading**: only pass media URLs the user provided or that came back from a previous run.\n- **Input validation**: only pass parameters documented above; confirm with `wavespeed run <model> -h` when unsure.\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn733k72mbe41a710dd1kfpg2s8257bs\",\n  \"slug\": \"wavespeed-face-swapper\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1788625830655\n}\n\nFile v2.0.1:skill-card.md\n\n## Description:\n\nSwap faces in images and videos using WaveSpeed AI with multi-face targeting, automatic lighting and skin tone adaptation, and consent-focused refusal guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[wavespeed](https://clawhub.ai/user/wavespeed)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to perform consented, lawful image or video face swaps through WaveSpeed AI while refusing impersonation, deception, sexual content, and other prohibited likeness edits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected media is processed by WaveSpeed and a WaveSpeed login may be stored locally.\n\nMitigation: Use only consented, lawful, non-deceptive media and rely on local login or environment credentials without sharing keys in chat.\n\nRisk: Global npm installs can add ordinary third-party package and local privilege risk.\n\nMitigation: Avoid running npm commands as administrator and prefer pinned or reviewed package versions where feasible.\n\nRisk: Face swapping can create misleading likeness edits if consent, rights, or disclosure are unclear.\n\nMitigation: Confirm consent, media rights, non-deceptive purpose, no sexual or intimate content, no minors, and recommend labeling shared outputs as AI-edited.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/wavespeed/skills/wavespeed-face-swapper)\n- [WaveSpeed MCP Server](https://github.com/WaveSpeedAI/mcp-server)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, Configuration instructions, Guidance]\n\n**Output Format:** [Markdown with inline bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces WaveSpeed output URLs or downloaded media files when commands are executed.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v2.0.0: 3 files, 4672 bytes\n\nFiles: skill-card.md (2649b), SKILL.md (7541b), _meta.json (141b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: wavespeed-face-swapper\ndescription: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face.\nmetadata:\n  author: wavespeedai\n  version: \"2.0\"\n---\n\n# WaveSpeedAI Face Swapper\n\nSwap faces in images and videos using WaveSpeed AI, with automatic lighting and skin tone adaptation. Supports targeting specific faces when multiple people are present.\n\n**Read [Responsible use](#responsible-use) before running anything.** Face swapping edits a real person's likeness; this skill is for consented, lawful, non-deceptive edits only.\n\n## Setup\n\nInstall the open-source CLI once and sign in; the CLI stores the key, so never ask the user to paste an API key into the chat:\n\n```bash\nnpm install -g @wavespeed/cli\nwavespeed login          # opens https://wavespeed.ai/accesskey and stores the key\nwavespeed status         # confirms you are signed in\n```\n\nFor CI or one-off shells, `WAVESPEED_API_KEY` in the environment also works.\n\nPrefer MCP tools over shell commands? The same platform is exposed by [`@wavespeed/mcp`](https://github.com/WaveSpeedAI/mcp-server) (`npx -y @wavespeed/mcp`; tools `search_models`, `get_model_schema`, `get_price`, `upload_file`, `run_model`, `get_prediction`). It shares the CLI's stored login. Every example below maps one-to-one onto `run_model` with the same model id and input fields.\n\n## Quick Start\n\n### Image Face Swap\n\n```bash\n# Upload local images to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./target-photo.png \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\n### Video Face Swap\n\n```bash\n# Upload local files to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\nExisting URLs work as-is:\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=\"https://example.com/target-photo.jpg\" \\\n  -i face_image=\"https://example.com/reference-face.jpg\" \\\n  --json | jq -r '.outputs[0]')\n```\n\n## API Endpoints\n\n### Image Face Swap\n\n**Model ID:** `wavespeed-ai/image-face-swap`\n\nReplace a face in an image with a reference face.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `image` | string | Yes | -- | URL of the image containing the face to replace |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n| `output_format` | string | No | `jpeg` | Output format. One of: `jpeg`, `png`, `webp` |\n\n#### Example\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=0 \\\n  -i output_format=\"png\" \\\n  --json | jq -r '.outputs[0]')\n```\n\n#### Targeting a Specific Face\n\nWhen multiple people are in the image, use `target_index` to select which face to replace:\n\n```bash\n# Replace the second-largest face in the image\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=1 \\\n  --json | jq -r '.outputs[0]')\n```\n\n### Video Face Swap\n\n**Model ID:** `wavespeed-ai/video-face-swap`\n\nReplace a face in a video with a reference face. Supports videos up to 10 minutes.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `video` | string | Yes | -- | URL of the video containing the face to replace. Must be publicly accessible. Max 10 minutes. |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n\n#### Example\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=0 \\\n  --json | jq -r '.outputs[0]')\n```\n\n\n## Pricing\n\n| Operation | Cost |\n|-----------|------|\n| Image face swap | $0.01 per image |\n| Video face swap | $0.01 per second (minimum $0.05 / 5 seconds) |\n\nVideo face swap supports videos up to 10 minutes.\n\n## Tips\n\n- Use clear, front-facing portraits for the reference face for best results\n- Consistent lighting between the target and reference face improves quality\n- Anime or illustrated characters may produce lower quality output\n- Use `target_index` to select specific faces when multiple people are present (0 = largest face)\n\n## Responsible use\n\nFace swapping manipulates a real person's likeness. Before calling either endpoint, confirm all of the following with the user. If any answer is no or unclear, do not run the model and explain why.\n\n- **Consent**: the person whose face is being inserted, and any identifiable person in the target media, has agreed to this use. Do not use the face of a public figure, a colleague, an ex-partner, or anyone else without their explicit consent.\n- **Rights to the media**: the user owns the target image or video or has permission from the owner to edit it.\n- **No impersonation or deception**: the output will not be presented as a real, unedited recording, used for fraud, identity verification bypass, harassment, defamation, political manipulation, or to put words or actions on someone they did not say or do.\n- **No sexual or intimate content**: never swap a face onto sexual, nude, or intimate material, regardless of consent claims.\n- **No minors**: do not process images or videos of children.\n- **Disclosure**: when the result will be shared, recommend labeling it as AI-edited.\n\nWaveSpeed's [Terms of Service](https://wavespeed.ai/static/terms) prohibit non-consensual and deceptive likeness edits; requests that violate them are refused and accounts may be suspended.\n\n## CLI tips\n\n```bash\n# Inspect the live input schema before running (fields, enums, defaults)\nwavespeed run wavespeed-ai/image-face-swap -h\n\n# Quote the price first\nwavespeed price wavespeed-ai/image-face-swap -p \"...\" -i key=value\n\n# Save outputs to disk instead of only printing URLs\nwavespeed run wavespeed-ai/image-face-swap -p \"...\" --json --download \"./out/{index}.{ext}\"\n\n# Local files: prefix the path with @ and the CLI uploads it and passes the hosted URL\nwavespeed run wavespeed-ai/image-face-swap -i <field>=@./local-file.png --json\n\n# Recover a result if the run was interrupted (the id is in the --json output)\nwavespeed show <id>\n```\n\n`run --json` prints `{ id, model, prompt, outputs: [url, ...], saved: [path, ...], elapsed_ms, raw }`. Read `outputs[0]` for the result URL.\n\n## Security constraints\n\n- **Never ask for the key in chat**: `wavespeed login` handles auth; if `wavespeed status` says signed out, ask the user to run it.\n- **Local files only via `@`**: bare paths are passed through untouched and the model will reject them. Only `@`-prefixed values upload.\n- **No arbitrary URL loading**: only pass media URLs the user provided or that came back from a previous run.\n- **Input validation**: only pass parameters documented above; confirm with `wavespeed run <model> -h` when unsure.\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn733k72mbe41a710dd1kfpg2s8257bs\",\n  \"slug\": \"wavespeed-face-swapper\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1788625055933\n}\n\nFile v2.0.0:skill-card.md\n\n## Description:\n\nSwap faces in images and videos using WaveSpeed AI with multi-face targeting, automatic lighting adaptation, and consent-focused refusal guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[wavespeed](https://clawhub.ai/user/wavespeed)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, creators, and developers use this skill to run WaveSpeed image or video face-swap models for consented, lawful media edits. The skill guides agents to refuse impersonation, deception, sexual or intimate content, public-figure misuse, and media involving minors.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Face swapping can enable non-consensual likeness edits, impersonation, deception, harassment, or sexualized misuse.\n\nMitigation: Confirm consent, rights to the media, non-deceptive intent, no sexual or intimate content, no minors, and disclosure for shared outputs before running the model.\n\nRisk: The workflow requires trusting third-party WaveSpeed CLI or MCP packages and uploading selected media to WaveSpeed.\n\nMitigation: Install only when that third-party trust decision is acceptable, avoid sharing API keys in chat, consider pinned package versions, and use a restricted environment for sensitive projects.\n\nRisk: Passing arbitrary URLs or unsupported parameters could expose unintended media or cause unexpected requests.\n\nMitigation: Use only user-provided media URLs or URLs returned by a previous run, upload local files with @-prefixed paths, and confirm live model schemas before adding parameters.\n\n## Reference(s):\n\n- [WaveSpeed MCP server](https://github.com/WaveSpeedAI/mcp-server)\n- [WaveSpeed access key page](https://wavespeed.ai/accesskey)\n- [WaveSpeed Terms of Service](https://wavespeed.ai/static/terms)\n- [WaveSpeedAI Face Swapper on ClawHub](https://clawhub.ai/wavespeed/skills/wavespeed-face-swapper)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, API calls]\n\n**Output Format:** [Markdown with inline bash commands and returned media URLs or downloaded files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May invoke WaveSpeed CLI or MCP tools; outputs typically include JSON fields such as id, model, outputs, saved, elapsed_ms, and raw.]\n\n## Skill Version(s):\n\n2.0.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.1.0: 3 files, 4343 bytes\n\nFiles: skill-card.md (2399b), SKILL.md (8110b), _meta.json (141b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: wavespeed-face-swapper\ndescription: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face.\nmetadata:\n  author: wavespeedai\n  version: \"1.1\"\n---\n\n# WaveSpeedAI Face Swapper\n\nSwap faces in images and videos using WaveSpeed AI, with automatic lighting and skin tone adaptation. Supports targeting specific faces when multiple people are present.\n\n**Read [Responsible use](#responsible-use) before running anything.** Face swapping edits a real person's likeness; this skill is for consented, lawful, non-deceptive edits only.\n\n## Authentication\n\n```bash\nexport WAVESPEED_API_KEY=\"your-api-key\"\n```\n\nGet your API key at [wavespeed.ai/accesskey](https://wavespeed.ai/accesskey).\n\n## Quick Start\n\n### Image Face Swap\n\n```javascript\nimport wavespeed from 'wavespeed';\n\n// Upload local images to get URLs\nconst imageUrl = await wavespeed.upload(\"/path/to/target-photo.png\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\n### Video Face Swap\n\n```javascript\nimport wavespeed from 'wavespeed';\n\n// Upload local files to get URLs\nconst videoUrl = await wavespeed.upload(\"/path/to/video.mp4\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/video-face-swap\",\n  {\n    video: videoUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\nYou can also pass existing URLs directly:\n\n```javascript\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: \"https://example.com/target-photo.jpg\",\n    face_image: \"https://example.com/reference-face.jpg\"\n  }\n))[\"outputs\"][0];\n```\n\n## API Endpoints\n\n### Image Face Swap\n\n**Model ID:** `wavespeed-ai/image-face-swap`\n\nReplace a face in an image with a reference face.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `image` | string | Yes | -- | URL of the image containing the face to replace |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n| `output_format` | string | No | `jpeg` | Output format. One of: `jpeg`, `png`, `webp` |\n\n#### Example\n\n```javascript\nimport wavespeed from 'wavespeed';\n\nconst imageUrl = await wavespeed.upload(\"/path/to/group-photo.png\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl,\n    target_index: 0,\n    output_format: \"png\"\n  }\n))[\"outputs\"][0];\n```\n\n#### Targeting a Specific Face\n\nWhen multiple people are in the image, use `target_index` to select which face to replace:\n\n```javascript\n// Replace the second-largest face in the image\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl,\n    target_index: 1\n  }\n))[\"outputs\"][0];\n```\n\n### Video Face Swap\n\n**Model ID:** `wavespeed-ai/video-face-swap`\n\nReplace a face in a video with a reference face. Supports videos up to 10 minutes.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `video` | string | Yes | -- | URL of the video containing the face to replace. Must be publicly accessible. Max 10 minutes. |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n\n#### Example\n\n```javascript\nimport wavespeed from 'wavespeed';\n\nconst videoUrl = await wavespeed.upload(\"/path/to/video.mp4\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/video-face-swap\",\n  {\n    video: videoUrl,\n    face_image: faceUrl,\n    target_index: 0\n  }\n))[\"outputs\"][0];\n```\n\n## Advanced Usage\n\n### Sync Mode (Image Face Swap only)\n\n```javascript\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  },\n  { enableSyncMode: true }\n))[\"outputs\"][0];\n```\n\n### Custom Client with Retry Configuration\n\n```javascript\nimport { Client } from 'wavespeed';\n\nconst client = new Client(\"your-api-key\", {\n  maxRetries: 2,\n  maxConnectionRetries: 5,\n  retryInterval: 1.0,\n});\n\nconst output_url = (await client.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\n### Error Handling with runNoThrow\n\n```javascript\nimport { Client, WavespeedTimeoutException, WavespeedPredictionException } from 'wavespeed';\n\nconst client = new Client();\nconst result = await client.runNoThrow(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n);\n\nif (result.outputs) {\n  console.log(\"Output URL:\", result.outputs[0]);\n  console.log(\"Task ID:\", result.detail.taskId);\n} else {\n  console.log(\"Failed:\", result.detail.error.message);\n  if (result.detail.error instanceof WavespeedTimeoutException) {\n    console.log(\"Request timed out - try increasing timeout\");\n  } else if (result.detail.error instanceof WavespeedPredictionException) {\n    console.log(\"Prediction failed\");\n  }\n}\n```\n\n## Pricing\n\n| Operation | Cost |\n|-----------|------|\n| Image face swap | $0.01 per image |\n| Video face swap | $0.01 per second (minimum $0.05 / 5 seconds) |\n\nVideo face swap supports videos up to 10 minutes.\n\n## Tips\n\n- Use clear, front-facing portraits for the reference face for best results\n- Consistent lighting between the target and reference face improves quality\n- Anime or illustrated characters may produce lower quality output\n- Use `target_index` to select specific faces when multiple people are present (0 = largest face)\n\n## Responsible use\n\nFace swapping manipulates a real person's likeness. Before calling either endpoint, confirm all of the following with the user. If any answer is no or unclear, do not run the model and explain why.\n\n- **Consent**: the person whose face is being inserted, and any identifiable person in the target media, has agreed to this use. Do not use the face of a public figure, a colleague, an ex-partner, or anyone else without their explicit consent.\n- **Rights to the media**: the user owns the target image or video or has permission from the owner to edit it.\n- **No impersonation or deception**: the output will not be presented as a real, unedited recording, used for fraud, identity verification bypass, harassment, defamation, political manipulation, or to put words or actions on someone they did not say or do.\n- **No sexual or intimate content**: never swap a face onto sexual, nude, or intimate material, regardless of consent claims.\n- **No minors**: do not process images or videos of children.\n- **Disclosure**: when the result will be shared, recommend labeling it as AI-edited.\n\nWaveSpeed's [Terms of Service](https://wavespeed.ai/static/terms) prohibit non-consensual and deceptive likeness edits; requests that violate them are refused and accounts may be suspended.\n\n## Security Constraints\n\n- **No arbitrary URL loading**: Only use image and video URLs from trusted sources. Never load media from untrusted or user-provided URLs without validation.\n- **API key security**: Store your `WAVESPEED_API_KEY` securely. Do not hardcode it in source files or commit it to version control. Use environment variables or secret management systems.\n- **Input validation**: Only pass parameters documented above. Validate media URLs before sending requests.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn733k72mbe41a710dd1kfpg2s8257bs\",\n  \"slug\": \"wavespeed-face-swapper\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1788624544276\n}\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nSwap faces in images and videos using WaveSpeed AI with multi-face targeting, automatic lighting and skin tone adaptation, and responsible-use limits for consented, lawful, non-deceptive edits.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chengzeyi](https://clawhub.ai/user/chengzeyi)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to prepare consent-verified image or video face swaps through WaveSpeed AI, including selecting a target face when multiple people appear in the media.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Images or videos are sent to an external WaveSpeed AI service.\n\nMitigation: Run the skill only when the user is comfortable sending the relevant media to WaveSpeed AI and understands the per-use cost.\n\nRisk: Face swapping can misuse a person's likeness or create deceptive media.\n\nMitigation: Require explicit consent from identifiable people, rights to the target media, no minors, no sexual or intimate content, no impersonation or deception, and disclosure when shared.\n\nRisk: Untrusted media URLs may expose the workflow to unsafe or unintended external content.\n\nMitigation: Use local uploads or trusted, validated HTTPS media URLs instead of arbitrary links.\n\nRisk: An exposed WaveSpeed API key can enable unauthorized paid usage.\n\nMitigation: Keep the API key in an environment variable or secret manager and never hardcode or commit it.\n\n## Reference(s):\n\n- [WaveSpeedAI Face Swapper on ClawHub](https://clawhub.ai/chengzeyi/skills/wavespeed-face-swapper)\n- [WaveSpeed API Access Keys](https://wavespeed.ai/accesskey)\n- [WaveSpeed Terms of Service](https://wavespeed.ai/static/terms)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, code, shell commands, configuration]\n\n**Output Format:** [Markdown with JavaScript and bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes WaveSpeed model IDs, media URL parameters, consent checks, and API key handling guidance.]\n\n## Skill Version(s):\n\n1.1.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 3 files, 3575 bytes\n\nFiles: skill-card.md (2506b), SKILL.md (6559b), _meta.json (141b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: wavespeed-face-swapper\ndescription: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting. Produces watermark-free results with automatic lighting and skin tone adaptation. Use when the user wants to replace a face in an image or video with another face.\nmetadata:\n  author: wavespeedai\n  version: \"1.0\"\n---\n\n# WaveSpeedAI Face Swapper\n\nSwap faces in images and videos using WaveSpeed AI. Produces watermark-free results with automatic lighting and skin tone adaptation. Supports targeting specific faces when multiple people are present.\n\n## Authentication\n\n```bash\nexport WAVESPEED_API_KEY=\"your-api-key\"\n```\n\nGet your API key at [wavespeed.ai/accesskey](https://wavespeed.ai/accesskey).\n\n## Quick Start\n\n### Image Face Swap\n\n```javascript\nimport wavespeed from 'wavespeed';\n\n// Upload local images to get URLs\nconst imageUrl = await wavespeed.upload(\"/path/to/target-photo.png\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\n### Video Face Swap\n\n```javascript\nimport wavespeed from 'wavespeed';\n\n// Upload local files to get URLs\nconst videoUrl = await wavespeed.upload(\"/path/to/video.mp4\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/video-face-swap\",\n  {\n    video: videoUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\nYou can also pass existing URLs directly:\n\n```javascript\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: \"https://example.com/target-photo.jpg\",\n    face_image: \"https://example.com/reference-face.jpg\"\n  }\n))[\"outputs\"][0];\n```\n\n## API Endpoints\n\n### Image Face Swap\n\n**Model ID:** `wavespeed-ai/image-face-swap`\n\nReplace a face in an image with a reference face.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `image` | string | Yes | -- | URL of the image containing the face to replace |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n| `output_format` | string | No | `jpeg` | Output format. One of: `jpeg`, `png`, `webp` |\n\n#### Example\n\n```javascript\nimport wavespeed from 'wavespeed';\n\nconst imageUrl = await wavespeed.upload(\"/path/to/group-photo.png\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl,\n    target_index: 0,\n    output_format: \"png\"\n  }\n))[\"outputs\"][0];\n```\n\n#### Targeting a Specific Face\n\nWhen multiple people are in the image, use `target_index` to select which face to replace:\n\n```javascript\n// Replace the second-largest face in the image\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl,\n    target_index: 1\n  }\n))[\"outputs\"][0];\n```\n\n### Video Face Swap\n\n**Model ID:** `wavespeed-ai/video-face-swap`\n\nReplace a face in a video with a reference face. Supports videos up to 10 minutes.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `video` | string | Yes | -- | URL of the video containing the face to replace. Must be publicly accessible. Max 10 minutes. |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n\n#### Example\n\n```javascript\nimport wavespeed from 'wavespeed';\n\nconst videoUrl = await wavespeed.upload(\"/path/to/video.mp4\");\nconst faceUrl = await wavespeed.upload(\"/path/to/reference-face.png\");\n\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/video-face-swap\",\n  {\n    video: videoUrl,\n    face_image: faceUrl,\n    target_index: 0\n  }\n))[\"outputs\"][0];\n```\n\n## Advanced Usage\n\n### Sync Mode (Image Face Swap only)\n\n```javascript\nconst output_url = (await wavespeed.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  },\n  { enableSyncMode: true }\n))[\"outputs\"][0];\n```\n\n### Custom Client with Retry Configuration\n\n```javascript\nimport { Client } from 'wavespeed';\n\nconst client = new Client(\"your-api-key\", {\n  maxRetries: 2,\n  maxConnectionRetries: 5,\n  retryInterval: 1.0,\n});\n\nconst output_url = (await client.run(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n))[\"outputs\"][0];\n```\n\n### Error Handling with runNoThrow\n\n```javascript\nimport { Client, WavespeedTimeoutException, WavespeedPredictionException } from 'wavespeed';\n\nconst client = new Client();\nconst result = await client.runNoThrow(\n  \"wavespeed-ai/image-face-swap\",\n  {\n    image: imageUrl,\n    face_image: faceUrl\n  }\n);\n\nif (result.outputs) {\n  console.log(\"Output URL:\", result.outputs[0]);\n  console.log(\"Task ID:\", result.detail.taskId);\n} else {\n  console.log(\"Failed:\", result.detail.error.message);\n  if (result.detail.error instanceof WavespeedTimeoutException) {\n    console.log(\"Request timed out - try increasing timeout\");\n  } else if (result.detail.error instanceof WavespeedPredictionException) {\n    console.log(\"Prediction failed\");\n  }\n}\n```\n\n## Pricing\n\n| Operation | Cost |\n|-----------|------|\n| Image face swap | $0.01 per image |\n| Video face swap | $0.01 per second (minimum $0.05 / 5 seconds) |\n\nVideo face swap supports videos up to 10 minutes.\n\n## Tips\n\n- Use clear, front-facing portraits for the reference face for best results\n- Consistent lighting between the target and reference face improves quality\n- Anime or illustrated characters may produce lower quality output\n- Use `target_index` to select specific faces when multiple people are present (0 = largest face)\n\n## Security Constraints\n\n- **No arbitrary URL loading**: Only use image and video URLs from trusted sources. Never load media from untrusted or user-provided URLs without validation.\n- **API key security**: Store your `WAVESPEED_API_KEY` securely. Do not hardcode it in source files or commit it to version control. Use environment variables or secret management systems.\n- **Input validation**: Only pass parameters documented above. Validate media URLs before sending requests.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn733k72mbe41a710dd1kfpg2s8257bs\",\n  \"slug\": \"wavespeed-face-swapper\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1772433743748\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nSwaps faces in images and videos using WaveSpeed AI with image and video face-swap endpoints and multi-face targeting. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[chengzeyi](https://clawhub.ai/user/chengzeyi) <br>\n\n### License/Terms of Use: <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to prepare WaveSpeed AI image or video face-swap requests, including selecting a target face when multiple people are present. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles highly sensitive likeness media and may be misused for impersonation, fraud, harassment, sexualized edits, or deceptive publication. <br>\nMitigation: Use it only with media the user owns or has explicit permission to edit, and only when every identifiable person has consented. <br>\nRisk: Uploading sensitive photos or videos to WaveSpeed may create privacy, retention, deletion, and output-use obligations. <br>\nMitigation: Check WaveSpeed privacy, retention, deletion, and output-use terms before uploading sensitive media. <br>\nRisk: Untrusted or unvalidated media URLs can expose the workflow to unsafe inputs. <br>\nMitigation: Use trusted media sources, validate URLs before sending requests, and avoid loading untrusted user-provided media URLs. <br>\nRisk: The WaveSpeed API key could be exposed if hardcoded or committed. <br>\nMitigation: Store WAVESPEED_API_KEY in environment variables or a secret management system and do not commit it to source control. <br>\n\n\n## Reference(s): <br>\n- [WaveSpeed API key access](https://wavespeed.ai/accesskey) <br>\n- [ClawHub skill page](https://clawhub.ai/chengzeyi/wavespeed-face-swapper) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Code, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown with JavaScript and bash code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Includes WaveSpeed model IDs, required API key setup, media URL guidance, target face selection, retry configuration, and error handling examples.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: WaveSpeedAI Face Swapper Owner: wavespeed Summary: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an ima","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npm install -g @wavespeed/cli\nwavespeed login          # opens https://wavespeed.ai/accesskey and stores the key\nwavespeed status         # confirms you are signed in"},{"language":"bash","snippet":"# Upload local images to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./target-photo.png \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')"},{"language":"bash","snippet":"# Upload local files to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')"},{"language":"bash","snippet":"OUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=\"https://example.com/target-photo.jpg\" \\\n  -i face_image=\"https://example.com/reference-face.jpg\" \\\n  --json | jq -r '.outputs[0]')"},{"language":"bash","snippet":"OUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=0 \\\n  -i output_format=\"png\" \\\n  --json | jq -r '.outputs[0]')"},{"language":"bash","snippet":"# Replace the second-largest face in the image\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./group-photo.png \\\n  -i face_image=@./reference-face.png \\\n  -i target_index=1 \\\n  --json | jq -r '.outputs[0]')"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: wavespeed-face-swapper\ndescription: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face.\nmetadata:\n  author: wavespeedai\n  version: \"2.0\"\n---\n\n# WaveSpeedAI Face Swapper\n\nSwap faces in images and videos using WaveSpeed AI, with automatic lighting and skin tone adaptation. Supports targeting specific faces when multiple people are present.\n\n**Read [Responsible use](#responsible-use) before running anything.** Face swapping edits a real person's likeness; this skill is for consented, lawful, non-deceptive edits only.\n\n## Setup\n\nInstall the open-source CLI once and sign in; the CLI stores the key, so never ask the user to paste an API key into the chat:\n\n```bash\nnpm install -g @wavespeed/cli\nwavespeed login          # opens https://wavespeed.ai/accesskey and stores the key\nwavespeed status         # confirms you are signed in\n```\n\nFor CI or one-off shells, `WAVESPEED_API_KEY` in the environment also works.\n\nPrefer MCP tools over shell commands? The same platform is exposed by [`@wavespeed/mcp`](https://github.com/WaveSpeedAI/mcp-server) (`npx -y @wavespeed/mcp`; tools `search_models`, `get_model_schema`, `get_price`, `upload_file`, `run_model`, `get_prediction`). It shares the CLI's stored login. Every example below maps one-to-one onto `run_model` with the same model id and input fields.\n\n## Quick Start\n\n### Image Face Swap\n\n```bash\n# Upload local images to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=@./target-photo.png \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\n### Video Face Swap\n\n```bash\n# Upload local files to get URLs\nOUTPUT_URL=$(wavespeed run wavespeed-ai/video-face-swap \\\n  -i video=@./video.mp4 \\\n  -i face_image=@./reference-face.png \\\n  --json | jq -r '.outputs[0]')\n```\n\nExisting URLs work as-is:\n\n```bash\nOUTPUT_URL=$(wavespeed run wavespeed-ai/image-face-swap \\\n  -i image=\"https://example.com/target-photo.jpg\" \\\n  -i face_image=\"https://example.com/reference-face.jpg\" \\\n  --json | jq -r '.outputs[0]')\n```\n\n## API Endpoints\n\n### Image Face Swap\n\n**Model ID:** `wavespeed-ai/image-face-swap`\n\nReplace a face in an image with a reference face.\n\n#### Parameters\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `image` | string | Yes | -- | URL of the image containing the face to replace |\n| `face_image` | string | Yes | -- | URL of the reference face image to swap in |\n| `target_index` | integer | No | `0` | Which face to replace (0 = largest face, 1-10 for others) |\n| `output_format` | string | No | `jpeg` | Output format. One of: `jpeg`, `png`, `webp` |\n\n#### Exampl"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn733k72mbe41a710dd1kfpg2s8257bs\",\n  \"slug\": \"wavespeed-face-swapper\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1788625830655\n}"},{"path":"skill-card.md","content":"## Description:\n\nSwap faces in images and videos using WaveSpeed AI with multi-face targeting, automatic lighting and skin tone adaptation, and consent-focused refusal guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[wavespeed](https://clawhub.ai/user/wavespeed)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to perform consented, lawful image or video face swaps through WaveSpeed AI while refusing impersonation, deception, sexual content, and other prohibited likeness edits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected media is processed by WaveSpeed and a WaveSpeed login may be stored locally.\n\nMitigation: Use only consented, lawful, non-deceptive media and rely on local login or environment credentials without sharing keys in chat.\n\nRisk: Global npm installs can add ordinary third-party package and local privilege risk.\n\nMitigation: Avoid running npm commands as administrator and prefer pinned or reviewed package versions where feasible.\n\nRisk: Face swapping can create misleading likeness edits if consent, rights, or disclosure are unclear.\n\nMitigation: Confirm consent, media rights, non-deceptive purpose, no sexual or intimate content, no minors, and recommend labeling shared outputs as AI-edited.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/wavespeed/skills/wavespeed-face-swapper)\n- [WaveSpeed MCP Server](https://github.com/WaveSpeedAI/mcp-server)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, Configuration instructions, Guidance]\n\n**Output Format:** [Markdown with inline bash code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces WaveSpeed output URLs or downloaded media files when commands are executed.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an image or video with another face. Skill: WaveSpeedAI Face Swapper Owner: wavespeed Summary: Swap faces in images and videos using WaveSpeed AI. Supports image face swap and video face swap with multi-face targeting, with automatic lighting and skin tone adaptation. Only for media the user has the right to edit and faces whose owners have consented; refuse impersonation, deception, or sexual content. Use when the user wants to replace a face in an ima","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1184,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T06:14:52.316Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T08:39:50.647Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}