Skip to content

Getting started

A five-minute walkthrough: sign up, create a flag, evaluate it from your code.

1. Sign up

Head to useactuator.ai and click Sign up. You'll be asked for an email, a display name, and an organization name. The org slug is derived from the org name and shown to you before you submit.

A magic-link email lands in your inbox. Click the link to confirm and you're signed in to the dashboard.

2. Create a project and environment

In the dashboard:

  1. Click New project. Pick a key (e.g. web) and a name (e.g. Web app). Optionally set a target ID field — the attribute key Actuator uses for percentage rollout stickiness (default user_id).
  2. Inside the project, click New environment. Common shapes are dev, staging, production. The key is immutable once created; the name is editable.

Every environment starts with an empty ruleset, so evaluation works immediately — primitives you create at the project level seed default state into every environment automatically.

3. Create a flag

From the project page, click New flag:

  • Keynew-onboarding (lowercase, dot-separated is conventional).
  • Typeboolean for an on/off flag, string for a multi-variant flag.
  • Default value — what callers get when no rule matches.
  • Description (optional) — what this flag controls.

The flag is created at the project level and seeded into every environment with rules: [] and the default value you supplied. You can edit the rules and default per environment from the flag's detail page.

4. Mint an API key

Under Org settings → API keys, click Mint key. You'll be shown the raw token exactly once — copy it now. Store it as an environment variable in your app:

bash
export ACTUATOR_API_KEY=act_…

API keys are bearer tokens. Send them as Authorization: Bearer act_… on every request.

5. Evaluate from your code

ts
import { ActuatorClient } from '@actuator/sdk'

const client = new ActuatorClient({
  baseUrl: 'https://useactuator.ai',
  apiKey: process.env.ACTUATOR_API_KEY,
})

const { evaluations } = await client.evaluate(envId, {
  context: { userId: 'u_42', plan: 'pro' },
  keys: ['new-onboarding'],
})

if (evaluations['new-onboarding']?.value === true) {
  // show the new onboarding
}
bash
curl -X POST https://useactuator.ai/api/v1/envs/$ENV_ID/evaluate \
  -H "Authorization: Bearer $ACTUATOR_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
        "context": { "userId": "u_42", "plan": "pro" },
        "keys": ["new-onboarding"]
      }'
swift
import Actuator

let client = ActuatorClient(
  baseURL: URL(string: "https://useactuator.ai")!,
  apiKey: ProcessInfo.processInfo.environment["ACTUATOR_API_KEY"]!
)

let result = try await client.evaluate(
  environmentID: envID,
  context: ["userId": "u_42", "plan": "pro"],
  keys: ["new-onboarding"]
)

if case .bool(true) = result.evaluations["new-onboarding"]?.value {
  // show the new onboarding
}

The response carries one envelope per requested key: the resolved value, the defaultValue, and a structured reason describing why that value was returned (which rule matched, the rule index, the matched value).

6. Add a targeting rule

From the flag detail page, click Add rule:

  • Conditionplan equals "enterprise".
  • Valuetrue.

Save. Now an evaluation with context: { plan: "enterprise" } returns true; everything else still gets the default. The audit log records who made the change, when, and what changed (the previous and new ruleset are both stored).

What's next

  • Concepts — understand the building blocks: flags, configs, segments, rules, contexts, evaluation.
  • Agents and AI — give an AI agent scoped access with the propose / apply workflow.
  • API reference — full reference for every endpoint.