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"}]
endmix deps.getFirst 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
endTier
Every tier.