Register Your App
Before you can interact with user data, you need to register your application and obtain API credentials.
Step 1: Developer Login
- Go to app.ofself.ai
- Click "Developer Login"
- Sign in with your OfSelf account (or create one if you don't have one)
Step 2: Register Your Application
- Navigate to Developer Dashboard
- Click "Register New App"
- Fill in your app details:
| Field | Description | Example |
|---|---|---|
| App Name | Display name users will see | "My Note App" |
| Description | What your app does | "A smart note-taking app" |
| Redirect URI | OAuth callback URL | https://myapp.com/callback |
| Webhook URL | (Optional) Receive real-time events | https://myapp.com/webhook |
| Website URL | Your app's public URL | https://myapp.com |
| Requested Permissions | What permissions your app needs | See below |
Requested Permissions
When registering, specify what permissions your app needs to function. These are shown to users during authorization and enforced at runtime.
| Tag Permission | Description |
|---|---|
discover | See that tags exist (names only) |
read | Read nodes within tags |
propose | Suggest new nodes (requires user approval) |
edit | Modify existing nodes |
create | Auto-create nodes (no approval needed) |
allow_new_tags | Create entirely new tags |
| Schema Permission | Description |
|---|---|
read | Read metadata schemas (can specify schema_ids or allow_all) |
write | Create/update metadata schemas (can specify schema_ids or allow_all) |
Your app can only use permissions it both requested AND was granted by the user. If you request read and create but the user grants read, create, and edit, your app can still only use read and create.
Users cannot authorize your app unless their selected exposure profile covers all permissions you requested. If a user's profile doesn't include the permissions your app needs, they must either:
- Select a different profile that includes those permissions
- Customize permissions to add what your app requires
This ensures your app always receives the permissions it needs to function correctly. Be thoughtful about what you request - requesting unnecessary permissions makes it harder for users to authorize your app.
- Click "Register"
Step 3: Get Your Credentials
After registration, you'll receive:
┌────────────────────────────────────────────────────────────────┐
│ App Registered Successfully! │
├────────────────────────────────────────────────────────────────┤
│ │
│ App ID: app_a1b2c3d4e5f6 │
│ Client ID: tp_xxxxxxxxxxxxx │
│ API Key: ofs_tp_xxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy │
│ │
│ ⚠️ Save these credentials securely! │
│ │
└────────────────────────────────────────────────────────────────┘
The API Key is only shown once at registration. Store it securely (environment variables, secret manager) - never in code.
The API key is returned in the registration response. If you don't see it displayed in the UI, check your browser's network tab for the API response, or contact support.
Credential Types
| Credential | Used For | How to Use |
|---|---|---|
| API Key | All API calls from your app | X-API-Key header |
| Client ID | Authorization flow | Include in the authorization URL so users can identify your app |
Step 4: Configure Your Environment
Python
# .env file
OFSELF_API_KEY=ofs_tp_xxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
OFSELF_CLIENT_ID=tp_xxxxxxxxxxxxx
import os
from ofself import OfSelfClient
client = OfSelfClient(api_key=os.environ["OFSELF_API_KEY"])
JavaScript
# .env file
OFSELF_API_KEY=ofs_tp_xxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
import { OfSelfClient } from 'ofself-sdk';
const client = new OfSelfClient({
apiKey: process.env.OFSELF_API_KEY!
});
App Verification
New apps start unverified. During this time:
- You can develop and test with your own user account
- Other users will see a warning before authorizing
- Some rate limits may apply
Apps are reviewed and verified by the OfSelf team. Verified apps get:
- ✅ "Verified" badge shown to users
- ✅ Higher rate limits
- ✅ Access to production features
Next Steps
Now that you have credentials:
- Set up authentication - Learn OAuth vs API Key
- Make your first API call - Hello World tutorial