elmo
  • Pricing
  • Changelog
  • Roadmap
  • Vision
  • Docs
420Sign up
IntroductionQuick Start
OverviewSDKsMCP
Get a brand's analytics GETGet query fan-out GETList cited domains GETList cited URLs GETList prompt performance GET
Create a brand POSTGet a brand GETList brands GETUpdate a brand PATCH
Add a competitor POSTDelete a competitor DELETEGet a competitor GETList competitors GETUpdate a competitor PATCH
Describe the calling key GET
List trackable models GET
Get the latest opportunities report GET
Get an organization GETGet billing state GETList organizations GET
Create a new prompt POSTDelete a prompt DELETEGet a prompt GETList all prompts GETUpdate a prompt PATCH
Create a report POSTGet report status and data GETList reports GET
Get a run GETList runs for a prompt GET
Get prompt snapshot GET
List a brand's tags GET
Analyze a website POST
Edit this page·View as Markdown·Report an issue·Join our Discord

Get product updates

New features and releases from Elmo, straight to your inbox.

Product

  • Features
  • Pricing
  • Off-Site AEO
  • Changelog
  • Roadmap

Resources

  • Blog
  • Documentation
  • Support
  • API Reference
  • Elmo Cloud Status
  • Provider Status
  • Issues

Learn

  • What is AEO?
  • What is GEO?
  • AEO Glossary
  • AI Search Guides
  • AI Search Statistics
  • AEO by Industry

Tools

  • Tool Directory
  • Free & Open-Source Tools
  • Compare Tools

Company

  • Vision
  • Brand Assets
  • Merch
  • llms.txt

© 2026 Blue Whale Software, LLC

TermsPrivacyCookiesSubprocessorsAcceptable Use
v0.4.4Open source on GitHub
Twitter / XLinkedInDiscordGitHub
elmo

SDKs

Call the Elmo API from TypeScript or Python.

Elmo publishes typed clients for the REST API, generated from the same OpenAPI spec the API serves, so a new endpoint reaches them without anyone writing it by hand.

LanguagePackageSource
TypeScript@elmohq/sdkelmohq/elmo-sdk-typescript
Pythonelmo-sdkelmohq/elmo-sdk-python

Both read an API key from ELMO_API_KEY and the address to call from ELMO_BASE_URL. The base URL has no default you can rely on — every instance serves the API on its own address — so always set it. On cloud that is https://app.elmohq.com/api/v1; a self-hosted instance uses its own APP_URL followed by /api/v1.

export ELMO_API_KEY=elmo_...
export ELMO_BASE_URL=https://app.elmohq.com/api/v1

Every deployment also shows both snippets at Settings → API, with its own base URL filled in.

TypeScript

npm install @elmohq/sdk
import { Elmo } from "@elmohq/sdk";

const elmo = new Elmo();

for await (const brand of elmo.brands.list()) {
  console.log(brand.name);
}

Pass apiKey and baseURL to the constructor instead of setting the environment variables, for example to talk to two instances from one process. Node.js 20.19 or later is required.

Python

pip install elmo-sdk
from elmo_sdk import Elmo

elmo = Elmo()

for brand in elmo.brands.list():
    print(brand.name)

AsyncElmo has the same calls for asyncio. Pass api_key and base_url to the constructor instead of setting the environment variables. Python 3.10 or later is required.

Versions

Each SDK is versioned on its own, by what changed in the API rather than by Elmo's release number: a removed or changed endpoint is a major version, a new one a minor version. Each repository's README covers pagination, errors, retries, and timeouts in full.

Was this page helpful?

On this page

TypeScriptPythonVersions