.dev

Quickstart

From zero to your first authenticated API call and registered app.

Prerequisites

  • A Feeef account — create one at accounts.feeef.org.
  • Node.js 18+ (for the JavaScript SDK / CLI) or Dart 3.11+ (for the Dart SDK).

1. Get an access token

Every API call is authenticated with an opaque bearer token. The fastest way to get one for personal experimentation is the first-party sign-in endpoint:

curl -X POST https://api.feeef.org/v1/users/auth/signin \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "password": "your-password"}'

The response contains user and token; the token.token field is the bearer value:

{
  "user": { "id": "...", "name": "...", "email": "you@example.com" },
  "token": { "type": "bearer", "token": "oat_...", "abilities": ["*"], "expiresAt": "..." }
}

First-party tokens carry ["*"] abilities (full access) and live for 90 days. For anything user-facing or distributed, use OAuth instead so tokens carry only the scopes the user consented to.

2. Make your first API call

curl https://api.feeef.org/v1/users/auth \
  -H "Authorization: Bearer oat_..."

3. Register your first app

Apps are OAuth clients — the identity your integration presents to users.

Create the app

Open the dashboard, sign in, and press New app. Pick:

  • a name users will recognize on the consent screen,
  • at least one redirect URI (exact match — http://localhost:3000/oauth/callback is fine for dev),
  • the scopes your integration needs (start with auth for sign-in only),
  • the client type: confidential (server-side) or public with PKCE (SPA, mobile, CLI).

Save the credentials

The client secret is shown once. Store it in your secret manager. The client ID is public.

Run the OAuth flow

Send users to the authorize URL, then exchange the callback code for a token:

https://accounts.feeef.org/oauth/authorize
  ?client_id=YOUR_CLIENT_ID
  &redirect_uri=http://localhost:3000/oauth/callback
  &response_type=code
  &scope=auth
  &state=RANDOM_STATE

Full walkthrough with PKCE, error handling and SDK helpers: Authorization code flow.

Where next

On this page