Open app
Moonborn — Developers

Elixir

The official Elixir SDK. Idiomatic supervised processes, Tesla-backed HTTP, ships within a week of every API release.

The Elixir SDK is moonborn on Hex. Generated from the canonical OpenAPI spec; idiomatic Elixir — supervisable processes, Tesla-backed HTTP, pattern-matchable result tuples.

Install

# mix.exs
def deps do
  [{:moonborn, "~> 1.0"}]
end
mix deps.get

First call

{:ok, client} = Moonborn.client(api_key: System.fetch_env!("MOONBORN_API_KEY"))
 
{:ok, persona} = Moonborn.Personas.create_persona(client,
  intent: "A 34-year-old founder from Istanbul. Brilliant but restless.",
  workspace_id: "ws_..."
)
 
IO.inspect({persona.id, persona.status})

Chat

{:ok, session} = Moonborn.Chat.create_session(client, persona_id: persona.id)
{:ok, reply} = Moonborn.Chat.send_message(client,
  session_id: session.id,
  content: "What drives you?"
)

Streaming

Moonborn.Chat.stream_message(client, session_id: session.id, content: "Tell me a quiet truth.")
|> Enum.each(fn
  {:token, delta} -> IO.write(delta)
  {:completed, %{drift_score: ds}} -> IO.puts("\ndrift: #{ds}")
end)

Error handling

case Moonborn.Personas.get_persona(client, id: "persona_...") do
  {:ok, persona} -> persona
  {:error, %Moonborn.ApiError{code: "rate_limited", retry_after: ms}} ->
    Process.sleep(ms)
    # retry
end

Tier

Every tier.

Next