API Reference

Everything you need to integrate dripctl.

Quick Start

Install the SDK

npm install @dripctl/sdk

Initialize

import { DripCtl } from '@dripctl/sdk';

const dripctl = new DripCtl({
  apiKey: process.env.DRIPCTL_API_KEY,
  tenantId: process.env.DRIPCTL_TENANT_ID,
});

Authentication

All requests require a Bearer token. You get an API key when you create a tenant.

curl https://api.dripctl.dev/v1/sequences \
  -H "Authorization: Bearer dpct_your_api_key"

Events

Events trigger matching sequences. Fire them when users do things.

POST/v1/events

SDK

await dripctl.events.create({
  eventType: 'user.signup',
  userId: 'jane@acme.com',
  metadata: { plan: 'free' },
});

curl

curl -X POST https://api.dripctl.dev/v1/events \
  -H "Authorization: Bearer dpct_..." \
  -H "Content-Type: application/json" \
  -d '{
    "eventType": "user.signup",
    "userId": "jane@acme.com",
    "metadata": {
      "tenantId": "your-tenant-id",
      "plan": "free"
    }
  }'

Parameters

FieldTypeRequiredDescription
eventTypestringyese.g. user.signup, user.activated
userIdstringnoEmail or unique ID
payloadobjectnoArbitrary event data
metadataobjectnoMust include tenantId
tagsstring[]noFilterable tags

Sequences

Sequences are email workflows triggered by events.

POST/v1/sequences
await dripctl.sequences.create({
  name: 'onboarding',
  trigger: 'user.signup',
  definition: {
    steps: [
      { type: 'send', template: 'welcome' },
      { type: 'wait', delay: '3 days' },
      { type: 'send', template: 'tips' },
      { type: 'wait', delay: '7 days' },
      { type: 'send', template: 'upgrade' },
    ],
  },
});
GET/v1/sequences

List all sequences for your tenant.

GET/v1/sequences/:id

Get a specific sequence by ID.

Step Types

TypeFieldsDescription
sendtemplate, id?Send an email using a template
waitdelayWait before next step (e.g. "3 days")
conditionproperty, yes, noBranch based on user property/event
exitreason?End the sequence

Runs

A run is a user's journey through a sequence. Created automatically when an event matches a sequence trigger.

GET/v1/runs/:id
{
  "id": "run_8f2ka...",
  "sequenceId": "seq_...",
  "userId": "jane@acme.com",
  "status": "running",
  "state": {
    "currentStepIndex": 2,
    "totalSteps": 5,
    "stepsCompleted": 2
  },
  "createdAt": "2026-03-22T18:00:00Z"
}

Private Beta

dripctl is in private beta. The API is stable but expanding. Join the waitlist for access and early pricing.