Nodes/comfyui-sync-lipsync-node/sync.so lipsync – api key
ComfyUI Node

sync.so lipsync – api key

The API key node that turns sync.so into your lipsync backend

By synchronicity-labs·Created about a year ago·Updated 12 months ago· 7
sync.so lipsync – api key
    • api_key
    api_key

    The name is a small lie: this node doesn't call any API and needs no key of its own to function. What it does is hold your sync.so API key and pass it along, so the rest of the pack can actually pay for the lipsync job. It's the credential node in the "sync.so lipsync" pack from synchronicity-labs/sync-comfyui, and it's the first thing you'll wire up - because without a key, the whole thing refuses to run.

    The wider point is worth being clear about before you start: this isn't a local model. The sync-comfyui pack is a thin wrapper around sync.so, a hosted lipsync API from the same people who brought you Wav2Lip. Your video and audio get uploaded to their servers, they do the lip-syncing on their GPUs, and your machine downloads the result. No model files, no VRAM pressure - but also no offline mode, and every generation costs credits. That tradeoff is exactly why a key node exists.

    How it works

    Mechanically, SyncApiKeyNode is almost insultingly simple. It exposes one api_key STRING input, default empty, and passes it through to a single SYNC_API_KEY output:

    def provide_api_key(self, api_key):
        return ({"api_key": api_key},)
    

    That's the whole node. The string rides inside a typed dict to the SyncLipsyncMainNode, which pulls it back out, stuffs it into an x-api-key header, and sends it to https://api.sync.so/v2/generate. Your key never touches ComfyUI's storage - it just lives in the graph while the workflow runs, which is the right call for a credential you're sharing with a third-party API.

    The one input that matters

    • api_key - paste the key from your sync.so dashboard (API settings → copy your API key). There's no built-in validation here; if you leave it blank, the main node bails with Error: API key is required. Typos get you a 401 from the API mid-job.

    That's genuinely it. No optional inputs, no output node status. You set it, you connect it to the generate node, done.

    Installing the pack

    The key node ships with the rest of the pack, so you're installing all of it at once:

    cd ComfyUI/custom_nodes
    git clone https://github.com/synchronicity-labs/sync-comfyui
    cd sync-comfyui
    pip install -r requirements.txt
    

    Then restart ComfyUI. Easier: use ComfyUI Manager and search for sync-comfyui (or just "sync") - the registry name for the same install is comfyui-sync-lipsync-node, which the README also mentions as comfy node install comfyui-sync-lipsync-node. The requirements pull in syncsdk, opencv-python-headless, librosa, soundfile, and torch - the torch and numpy bits you almost certainly already have, but the audio/vision libs are new and worth letting install rather than skipping.

    Common issues

    • "API key is required" even though you pasted one - you connected the key node's output to the main node but left the widget empty, or the connection is dangling. The main node reads the value from the node, not from anywhere else.
    • 401 errors at the API - the key is stale, mistyped, or your account has no credits. The node gives you zero feedback at its own level; the error surfaces when the generate node hits sync.so. Check the key in the dashboard and confirm your plan actually includes lipsync credits.

    If you're on the fence about a paid cloud lipsync at all: the community consensus is that sync.so's quality is genuinely good for talking-head avatars (it's built on Wav2Lip lineage), with the caveats that output is around 25fps and the pricing adds up fast. A key node is only worth having if you've already decided the subscription is.

    CategorySync.so/Lipsync

    Inputs (1)

    NameTypeDefaultDescription
    api_keySTRING

    Outputs (1)

    NameTypeDescription
    api_keySYNC_API_KEY