Skip to main content
Genies are voice AI agents powered by ElevenLabs. Each genie has its own system prompt, voice configuration, conversation settings, and optional phone number.
Standard users can only manage their own genies. Admin users can manage all genies and view owner information by passing adminMode: true.

List genies

Retrieves a paginated list of genies with optional search filtering. Returns essential fields suitable for lists and dropdowns.
resource
string
required
Must be "genies"
action
string
required
Must be "list"
data
object
success
boolean
Whether the request succeeded.
data
object
const response = await ApiService.invoke("genies", "list", undefined, {
  limit: 30,
  offset: 0,
  filters: {
    searchTerm: "support",
  },
});

Get all genies

Retrieves all genies with full configuration using cursor-based pagination. Returns complete genie objects including settings, phone, page, group, and knowledge base data.
resource
string
required
Must be "genies"
action
string
required
Must be "all"
data
object
success
boolean
Whether the request succeeded.
data
object
// First page
const page1 = await ApiService.invoke("genies", "all", undefined, {
  limit: 25,
});

// Next page
const page2 = await ApiService.invoke("genies", "all", undefined, {
  limit: 25,
  cursor: page1.data.nextCursor,
});
When adminMode is true, each genie includes an owner field with id, full_name, and email. Standard users always see owner: null.

Get genie

Retrieves a single genie by ID with its full configuration, including settings, phone number, page, group, and knowledge base.
resource
string
required
Must be "genies"
action
string
required
Must be "get"
id
string
required
The UUID of the genie to retrieve.
success
boolean
Whether the request succeeded.
data
object
const response = await ApiService.invoke(
  "genies",
  "get",
  "550e8400-e29b-41d4-a716-446655440000"
);

Create genie

Creates a new voice AI genie with the specified configuration. The genie is automatically provisioned in ElevenLabs.
resource
string
required
Must be "genies"
action
string
required
Must be "create"
data
object
required
success
boolean
Whether the request succeeded.
message
string
Confirmation message.
data
object
const response = await ApiService.invoke("genies", "create", undefined, {
  genieName: "Customer Support Bot",
  useCase: "Handle customer support inquiries",
  systemPrompt:
    "You are a helpful customer support representative. Be friendly and professional.",
  firstMessage:
    "Hello! Welcome to our support team. How can I help you today?",
  webWelcomeMessage: "Let's connect with our support team",
  voiceId: "EZ3epTG1EiOmx2GWRto6",
  llmModel: "gemini-3-flash-preview",
  temperature: 0.7,
  maxTokens: 8000,
  brand: "Acme Corp",
  category: "Support",
  description: "AI-powered customer support assistant",
  supportEmails: ["support@acme.com"],
  sendConversationReports: true,
  attachPhoneNumber: false,
});
Admin users can create genies on behalf of other users by including impersonatedUserId in the data object.

Update genie

Updates an existing genie’s configuration. Supports partial updates — only the fields you include will be changed.
resource
string
required
Must be "genies"
action
string
required
Must be "update"
id
string
required
The UUID of the genie to update.
data
object
required
success
boolean
Whether the request succeeded.
message
string
Confirmation message.
data
object
const response = await ApiService.invoke(
  "genies",
  "update",
  "550e8400-e29b-41d4-a716-446655440000",
  {
    name: "Updated Bot Name",
    description: "Updated description",
    settings: {
      conversation_config: {
        agent: {
          first_message: "Updated greeting message",
          prompt: {
            prompt: "You are an advanced customer support AI...",
            temperature: 0.8,
            max_tokens: 2048,
          },
        },
        tts: {
          voice_id: "new-voice-id",
          stability: 0.8,
          similarity_boost: 0.9,
          speed: 1.05,
        },
      },
    },
  }
);

Delete genie

Permanently deletes a genie, removes it from ElevenLabs, and releases any associated phone numbers.
resource
string
required
Must be "genies"
action
string
required
Must be "delete"
id
string
required
The UUID of the genie to delete.
success
boolean
Whether the request succeeded.
message
string
Confirmation message.
This action is irreversible. The genie, its ElevenLabs agent, and any attached phone numbers will be permanently removed.
const response = await ApiService.invoke(
  "genies",
  "delete",
  "550e8400-e29b-41d4-a716-446655440000"
);

Reorder genies

Updates the display order of genies. Pass an object mapping genie IDs to their desired position (zero-indexed).
resource
string
required
Must be "genies"
action
string
required
Must be "reorder"
data
object
required
success
boolean
Whether the request succeeded.
message
string
Confirmation message.
const response = await ApiService.invoke("genies", "reorder", undefined, {
  sort: {
    "550e8400-e29b-41d4-a716-446655440000": 0,
    "990e8400-e29b-41d4-a716-446655440004": 1,
    "aa0e8400-e29b-41d4-a716-446655440005": 2,
  },
});

Error codes

CodeStatusDescription
UNAUTHORIZED401Missing or invalid token
INVALID_TOKEN401Token validation failed
FORBIDDEN403User lacks required permissions
AGENT_NOT_FOUND404Genie not found or access denied
VALIDATION_ERROR400Invalid request parameters
INTERNAL_ERROR500Server error