SOKE
Integrations

Zapier

Connect Soke to 5,000+ apps with Zapier webhooks — step-by-step guides for common content optimization workflows.

Zapier Integration

Use Soke with Zapier to connect content optimization to 5,000+ apps. Since Soke is API-first, you'll use the Webhooks by Zapier action to call endpoints directly.

What you can build

  • Google Sheets pipelines — new row triggers keyword research, results written back automatically
  • Content optimization chains — multi-step Zaps that chain keywords → titles → descriptions
  • Slack/email alerts — get notified when trend scans or competitor analyses complete
  • CMS automation — automatically generate optimized metadata for new content drafts

Prerequisites

  • Zapier account — Pro plan or higher recommended for multi-step Zaps
  • Soke API key — get one from your Soke dashboard

Authentication Setup

All Soke API calls in Zapier use the Webhooks by Zapier action with custom headers.

Add a Webhooks action

In your Zap, add an action step:

  1. Search for Webhooks by Zapier
  2. Select Custom Request
  3. Configure the fields:
FieldValue
MethodPOST
URLhttps://api.usesoke.ai/api/v1/research/keywords
DataYour JSON payload (see examples below)

Set headers

In the Headers field, add:

Content-Type: application/json
X-Soke-Key: sk_live_your_api_key

Each header goes on its own line in the format Key: Value.

Set the data payload

In the Data field, enter your JSON body:

{
  "topic": "productivity tips for developers",
  "platform": "youtube"
}

To use dynamic data from a trigger or previous step, use Zapier's field mapping:

{
  "topic": "{{steps.trigger.topic}}",
  "platform": "youtube"
}

Test the step

Click Test step. Zapier will show the parsed response. You should see fields like:

  • data__success: true
  • data__data__keywords: (array of results)
  • data__meta__processing_time_ms: (number)

Zapier flattens nested JSON with double underscores (__).


Understanding Soke Responses in Zapier

Zapier flattens nested JSON responses. Here's how Soke's standard envelope maps:

Soke fieldZapier field name
successdata__success
data.keywords[0].keyworddata__data__keywords[]keyword
data.longTailPhrasesdata__data__longTailPhrases
meta.processing_time_msdata__meta__processing_time_ms
error.codedata__error__code
error.messagedata__error__message

Use Zapier's Formatter by Zapier → Utilities → Line Itemizer to work with arrays. This converts a JSON array into individual items you can iterate over in subsequent steps.


Zap: Keyword Research from Google Sheets

Automatically research keywords when a new row is added to a spreadsheet.

Trigger: New Spreadsheet Row

  1. App: Google Sheets
  2. Event: New Spreadsheet Row
  3. Spreadsheet: Select your content planning spreadsheet
  4. Worksheet: Select the sheet with your topics

The trigger fires when you add a new row with a topic in a designated column (e.g., Column A = "Topic").

Action: Research Keywords

  1. App: Webhooks by Zapier
  2. Event: Custom Request
  3. Method: POST
  4. URL: https://api.usesoke.ai/api/v1/research/keywords
  5. Headers:
    Content-Type: application/json
    X-Soke-Key: sk_live_your_api_key
  6. Data:
    {
      "topic": "{{steps.trigger.columnA}}",
      "platform": "youtube",
      "maxResults": 10
    }

Replace columnA with the actual column name from your spreadsheet.

Action: Update Spreadsheet Row

  1. App: Google Sheets
  2. Event: Update Spreadsheet Row
  3. Row: Use the trigger's row number
  4. Map fields:
    • Top Keyword column: {{steps.research_keywords.data__data__keywords[]keyword}} (first item)
    • Competition Score column: {{steps.research_keywords.data__data__keywords[]competitionScore}}
    • Trend Direction column: {{steps.research_keywords.data__data__keywords[]trendDirection}}
    • Long Tail Phrases column: {{steps.research_keywords.data__data__longTailPhrases}}

Zap: Content Optimization Pipeline

Chain keyword research → title optimization → description generation in a single multi-step Zap.

Total credits per run: 8 (2 + 3 + 3)

Step 1: Research Keywords

Webhooks by Zapier → Custom Request:

  • Method: POST
  • URL: https://api.usesoke.ai/api/v1/research/keywords
  • Headers: Content-Type: application/json and X-Soke-Key: sk_live_...
  • Data:
    {
      "topic": "your topic here",
      "platform": "youtube",
      "maxResults": 10
    }

Step 2: Extract Keywords with Formatter

Add a Formatter by Zapier step to extract keyword names:

  1. Event: Utilities → Lookup Table (or use Text → Extract Pattern)
  2. Map the keywords array from Step 1 into a comma-separated string

Alternatively, reference the first few keywords directly:

  • {{steps.step1.data__data__keywords[]keyword}}

Step 3: Optimize Title

Webhooks by Zapier → Custom Request:

  • Method: POST
  • URL: https://api.usesoke.ai/api/v1/content/optimize-title
  • Data:
    {
      "draftTitle": "How to be productive as a developer",
      "platform": "youtube",
      "keywords": ["{{steps.step2.output}}"]
    }

Step 4: Generate Description

Webhooks by Zapier → Custom Request:

  • Method: POST
  • URL: https://api.usesoke.ai/api/v1/content/generate-description
  • Data:
    {
      "title": "{{steps.step3.data__data__alternatives[]title}}",
      "platform": "youtube",
      "keywords": ["{{steps.step2.output}}"],
      "tone": "casual"
    }

Step 5: Output

Send results to your destination:

  • Google Sheets: Update a row with the optimized title and description
  • Slack: Post a message with the results
  • Notion: Create a new page with the content

Map these fields:

  • Optimized title: {{steps.step3.data__data__alternatives[]title}}
  • Title score: {{steps.step3.data__data__alternatives[]overallScore}}
  • Description: {{steps.step4.data__data__description}}

Zap: Title Scoring

Score an existing title to identify improvements.

  1. Trigger: Manual, schedule, or new spreadsheet row
  2. Action: Webhooks by Zapier → Custom Request
    • Method: POST
    • URL: https://api.usesoke.ai/api/v1/content/score
    • Data:
      {
        "content": "10 Developer Productivity Hacks That Actually Work",
        "platform": "youtube",
        "targetKeywords": ["developer productivity"]
      }
  3. Action: Send results (overall score, breakdown, suggestions) to Sheets/Slack/email

Key fields to map:

  • Overall score: data__data__overallScore
  • Keyword placement: data__data__breakdown__keywordPlacement__value
  • Suggestions: data__data__breakdown__emotionalPull__suggestion (and other dimensions)

Zap: Chat Completions

Use Soke's chat endpoint for flexible, natural language content tasks:

  • Method: POST
  • URL: https://api.usesoke.ai/api/v1/chat/completions
  • Data:
    {
      "messages": [
        {
          "role": "user",
          "content": "Research keywords for cooking tutorials and suggest 3 optimized titles"
        }
      ],
      "platform": "youtube",
      "model": "soke-v1",
      "stream": false
    }

Map response fields:

  • AI response: data__choices[]message__content
  • Services used: data__choices[]message__data__services_used

Handling Async Operations

Thumbnail generation and transcription are async — they return a job ID and you poll for results.

Polling pattern in Zapier

Start the async job

Webhooks by Zapier → Custom Request to start thumbnail generation or transcription (see Thumbnail or Transcription docs). For thumbnails, we recommend using a templateId from a saved thumbnail template for consistent styling — just pass the templateId, title, prompt, and platform. Supported resolutions: 1280x720 (landscape) or 1080x1920 (portrait/shorts).

Add a Delay

Use Delay by Zapier:

  • Delay for: 30 seconds (thumbnails) or 60 seconds (transcription)

This gives the server time to process before polling.

Poll for status

Webhooks by Zapier → Custom Request:

  • Method: GET
  • URL: https://api.usesoke.ai/api/v1/thumbnail/{{steps.start_job.data__data__id}} (thumbnail) or https://api.usesoke.ai/api/v1/transcription/{{steps.start_job.data__data__id}} (transcription)
  • Headers: X-Soke-Key: sk_live_...

Check completion with Paths

Use Paths by Zapier (requires Professional plan):

Path A — Completed:

  • Condition: data__data__status is Completed (thumbnail) or completed (transcription)
  • Continue to output step

Path B — Still processing:

  • Condition: data__data__status is not Completed/completed
  • Add another Delay + Poll step (Zapier doesn't support loops, so you'll need to chain additional delay+poll steps for reliability)

Zapier doesn't natively support loops. For async operations, either: (1) use a generous initial delay (60–90 seconds) so the first poll succeeds, or (2) chain 2–3 delay+poll sequences for reliability. For complex polling requirements, consider using n8n or Make instead.


Error Handling

Using Paths for error checking

After each Webhooks step, add a Paths by Zapier step:

Path A — Success:

  • Condition: data__success is true
  • Continue to next processing step

Path B — Error:

  • Condition: data__success is false
  • Action: Send notification with data__error__code and data__error__message

Common error codes

CodeStatusWhat to do
RATE_LIMIT_EXCEEDED429Add a Delay step and retry
INSUFFICIENT_CREDITS402Notify yourself to purchase more credits
SUBSCRIPTION_REQUIRED403Subscription is inactive — check billing
PLATFORM_NOT_IMPLEMENTED501Platform not yet supported
Server errors5xxCredits are auto-refunded; retry after delay

Tips & Limitations

Zapier-specific considerations

  • No workflow import — unlike n8n and Make, Zapier doesn't support importing workflow JSON files. Use the step-by-step guides above to build your Zaps manually
  • Multi-step requires Pro — chaining multiple Webhooks actions requires a Zapier Professional plan or higher
  • Paths require Professional — the Paths feature for conditional logic requires Professional plan
  • No native loops — for async polling, chain multiple delay+poll steps rather than looping

Credit management

  • A keyword research Zap uses 2 credits per run
  • A full content pipeline uses 8 credits per run
  • Chat completions use 5 credits per run
  • Monitor usage with GET /api/v1/usage/summary in a scheduled Zap

Best practices

  • Always include "platform": "youtube" — it's technically optional (defaults to youtube), but being explicit prevents confusion
  • Use Formatter steps — Zapier's Formatter by Zapier app helps extract and transform nested JSON data between steps
  • Test each step individually — Zapier lets you test each step before moving to the next. Use this to verify your JSON payloads and field mappings
  • Set up error notifications — add a Paths step after critical Webhooks actions to catch and alert on failures

Check your plan's credit limits and rate limits on the Rate Limiting & Credits page to plan your Zap usage accordingly.

On this page