Getting Started

Enprompta is a prompt registry, observability, and evaluation platform for teams shipping AI. This guide takes you from zero to your first LLM trace in under five minutes — no credit card — then points you to everything else.

What you'll end up with

  • An application sending traces to Enprompta over the standard OTLP endpoint.
  • Those traces visible in your dashboard, with cost and latency filled in automatically.
  • A foundation to build on — prompt serving, datasets, and evaluations.

1. Before you start

1

Create a free account

Sign up for a free Enprompta workspace. No credit card required — the Free plan includes 5,000 observability traces every month.

2

Create an API key

In the dashboard, open API Keys and create a key with the traces:write scope. You'll send it as a Bearer token in the next step.

Keep your API keys secure

Never expose API keys in client-side code or public repositories.
Recording traces works on every plan, including Free. Broader REST API access (prompts, executions, teams) requires a paid plan — see pricing.

Not a developer?

Sending traces means making a small change inside your app, where it calls the model — that's a job for an engineer. But you can do everything around it yourself and hand off just the snippet.

You can do now

  • Create the account & the traces:write key above
  • Watch traces appear in Observability once they're flowing

Hand to engineering

  • The “Any OTel exporter” tab below — for a team already on OpenTelemetry it's a ~2-line env-var change
  • Or the full tracing guide

2. Capture your first trace

Pick your stack below. Building a Node or Python app? The Enprompta SDK auto-instruments OpenAI, Anthropic & Gemini in one line. Anything else speaks standard OTLP/HTTP — cURL, the OpenTelemetry SDK, or any exporter you already run.

1

Send a span

Each tab traces a single model call. Drop in your API key and run it.

TypeScript — @enprompta/sdk
// npm install @enprompta/sdk
import { init } from '@enprompta/sdk'
import Anthropic from '@anthropic-ai/sdk'

// Pass the client you imported via `modules` (works under ESM & bundlers).
init({
  apiKey: process.env.ENPROMPTA_API_KEY,
  modules: { anthropic: Anthropic }, // also: { openai: OpenAI, google: GenerativeModel }
})

// Every call is now traced — no other code changes.
const anthropic = new Anthropic()
await anthropic.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 256,
  messages: [{ role: 'user', content: 'Hello' }],
})

Full SDK guides: TypeScript · Python.

A successful request returns 200. Spans are persisted asynchronously, so they appear a moment later.

2

See it land in your dashboard

Open Observability in the dashboard. Your chat span shows up with its model, prompt, completion, token counts — and cost and latency that Enprompta computes for you.

That's your first trace! 🎉

You now have live LLM observability. Everything else — prompt versioning, datasets, and evaluations — builds on the traces you just started collecting.

3. Where to go next

Traces are the doorway. From here, pick the path that matches what you're building.

4. Core concepts (API reference)

The reference below applies to every Enprompta REST endpoint — authentication, errors, rate limits, idempotency, and pagination. Reach for it when you move beyond tracing into the full API.

Authentication

The API supports two authentication methods: API Keys for server-to-server communication and OAuth2 Client Credentials for applications requiring scoped access.

API Keys (recommended)

Generate a key from your dashboard and include it in the Authorization header.

Request header
Authorization: Bearer ep_your_api_key_here

OAuth2 Client Credentials

For applications requiring scoped access, use the OAuth2 client credentials flow. Create a client in your dashboard under API Keys → OAuth Clients to get a client_id and client_secret (the secret is shown once).

Token request
curl -X POST https://enprompta.com/api/v1/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "scope": "prompts:read prompts:write"
  }'

Available OAuth2 scopes:

prompts:readprompts:writeexecutions:readexecutions:writeteams:readteams:writewebhooks:manageanalytics:read

Error handling

All API errors follow a consistent format with numeric error codes for easy handling.

Error response format
{
  "success": false,
  "error": {
    "code": 1001,
    "type": "AUTH_INVALID_TOKEN",
    "message": "The provided API key is invalid or expired",
    "request_id": "req_abc123xyz"
  }
}

Error code ranges

RangeCategoryDescription
1xxxAuthenticationInvalid tokens, expired keys, missing credentials
2xxxValidationInvalid input, schema errors, missing fields
3xxxResourceNot found, already exists, conflicts
4xxxRate LimitingRate limit exceeded, quota exhausted
5xxxServerInternal errors, service unavailable

Rate limits

Rate limits are applied per API key and vary by the key's rate-limit tier.

TierRequests/minRequests/day
Free— (trace ingestion only)
Pro (standard key)6010,000
Pro (premium key)300100,000
EnterpriseCustom (up to 1,000+)Custom

Rate limit headers are included in every response:

Response headers
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1705312800

Idempotency

For safe retries on POST, PUT, and PATCH requests, include an Idempotency-Key header.

Idempotent request
curl -X POST https://enprompta.com/api/v1/prompts \
  -H "Authorization: Bearer ep_your_api_key" \
  -H "Idempotency-Key: unique-request-id-12345" \
  -H "Content-Type: application/json" \
  -d '{"title": "My Prompt", "content": "Hello {{name}}"}'
  • Keys must be 1-255 alphanumeric characters (underscores and hyphens allowed)
  • Duplicate requests with the same key return the cached response
  • Keys expire after 24 hours
  • The response includes X-Idempotent-Replayed: true if cached
Getting Started - Enprompta