All twins

Klaviyo

live · conformance passing

Models the Klaviyo API a lifecycle marketing integration actually uses — profiles with upsert semantics and a real duplicate conflict, lists and membership as relationships, consent per channel with suppressions and the bulk jobs that move them, event ingestion that creates its metric and its profile on first use, segments whose membership is derived from their definition on every read rather than stored, and campaigns that queue a send job and go out when the sandbox is advanced — with private-key authentication, per-resource scope refusals, a dated revision header, per-endpoint burst and steady rate limits with a real Retry-After, and cursor pagination whose links point back at the sandbox.

Category
Marketing
Sandbox key
pk_…
Verified against
klaviyo-api 24.0.0
Replaces
Testing lifecycle marketing against a production Klaviyo account

Scenarios

Start a sandbox in one of these, or describe the state you want in a sentence and the seeder writes the records it implies.

  • Stocked account

    A few hundred profiles with properties and event history, so pagination and filters have real data on the first call.

  • Suppressed profiles

    A hard bounce, a spam complaint and an unsubscribe, so send-eligibility logic runs against all three reasons.

  • Pending bulk job

    An import job stuck in processing, so a caller's poll loop is exercised instead of skipped.

  • Campaign scheduled

    A campaign queued with a future send time, so advancing the sandbox has a send to perform and the pre-send refusals are reachable.

  • Narrow scopes

    A read-only key, so every write is refused the way a real key with the wrong scopes refuses it.

  • Rate limited

    Profile writes start throttled while event ingestion flows, so per-endpoint backoff is exercised rather than a global sleep.

  • Empty account

    A brand-new account with no metrics at all, because the first-event metric-auto-creation path only exists once.

What it models

Records your code can read, write and edit for the life of the sandbox. A route the twin does not model returns a provider-shaped refusal rather than a plausible response.

  • account
  • profiles
  • lists
  • list_memberships
  • segments
  • metrics
  • events
  • campaigns
  • campaign_messages
  • templates
  • flows
  • suppressions
  • bulk_jobs

Verified in CI against

  • pythonklaviyo-api24.0.0

Live · console.twinbay.ai

Start with one base URL.

Create a sandbox, describe the state you want it in, and point your existing SDK at the hostname it gives you. The sandbox logs each request your agent makes, and you can edit any record it holds.

Start building

A sandbox in under a minute, no card required. Twinbay is free for academic researchers.