Skip to content

n8n + Wahlu

Add social content to your n8n workflows.

Connect an HTTP Request node to Wahlu’s REST API. Prepare posts from your source data and make the review step part of the workflow.

Instagram · Facebook · TikTok · YouTube · LinkedIn personal profiles · X · Bluesky · Telegram · Discord · Tumblr

A draft-first workflow
01  Receive your source content
02  Import and check the media
03  Create a post draft
04  Check publishing readiness
05  Hold the schedule for review

Built with HTTP Request. This guide uses the REST API; no native Wahlu marketplace app is required.

Two ways to use n8n with Wahlu

Example workflows to adapt to your own source data and review process.

Prepare a weekly batch

Start with
A Schedule Trigger starts your weekly workflow.
In Wahlu
Read approved source items and create one Wahlu draft for each, with a stable idempotency key.
Ready for
Drafts with readiness checks and schedules held for review.

Prepare a campaign from a webhook

Start with
Your backend sends an approved launch brief.
In Wahlu
Import the public media URL, check readiness and attach the media to a new draft.
Ready for
A traceable draft and schedule linked to the original launch event.

Connect n8n to the API

Start with one draft and verify the returned result before adding the rest of your workflow.

  1. 1

    Create a key and choose a brand

    In Wahlu, open Settings → API Keys. Create a key with the scopes your workflow needs and restrict it to the relevant brands. Save the secret in your automation platform’s credential store.

    Create a key and choose a brand
    GET https://api.wahlu.com/v1/context
    Authorization: Bearer <your stored API key>

    The context response lists accessible brands and useful resource links. Use a returned brand ID in the next request. Keep keys out of shared examples and source control.

  2. 2

    Create the first draft

    Add an HTTP Request node and select your Wahlu Header Auth credential. Send a POST request with a JSON body, using expressions for the source fields.

    Create the first draft
    POST https://api.wahlu.com/v1/brands/:brand_id/content-items
    Authorization: Bearer <your stored API key>
    Content-Type: application/json
    Idempotency-Key: {{ $json.idempotency_key }}
    
    {
      "name": "Launch announcement",
      "copy_mode": "single",
      "single_copy": {
        "caption": "{{ $json.text }}",
        "hashtags": []
      }
    }

    Replace :brand_id and map the placeholder values. This example creates a text draft; add the required media and platform settings before scheduling. Use a stable key for each logical draft and reuse it when retrying the same request.

  3. 3

    Check readiness before scheduling

    For posts with media, import it and read its readiness before creating the attached draft. Run preflight using your chosen accounts, a future time and pending_review. Follow the returned blockers and next actions.

    A pending-review schedule is held: no execution, job, or provider request. The complete recipe shows how to carry forward IDs, use separate idempotency keys and confirm the held result.

Make repeated runs predictable.

One event, one logical draft

Derive the idempotency key from a stable source event or row ID. Use a different key for the schedule. A network retry should not create duplicate content.

Stop where a decision is needed

Check the API response at each step. If media or a publishing target is not ready, surface its guidance. Keep publication authority separate from content preparation.

Keep platform settings specific

Account and format requirements vary. Read capabilities and targets, and use the current privacy choices returned for a selected TikTok account.

Keep keys scoped

Grant only the brands and operations your scenario uses. The authentication reference lists the scopes needed for media, drafts, preflight and schedules.

Start with one working draft.

Connect your accounts, create a scoped API key and test your first preparation workflow.