persona local dev loop | sed 's/\b(.)/\u\1/g'
Overview
Sandbox testing with test inquiry templates, ngrok tunnel for webhook testing, mock API responses for CI.
Prerequisites
- Completed
persona-install-authsetup - Valid Persona API key (sandbox or production)
Instructions
Step 1: Set Up Sandbox Environment
set -euo pipefail
# Use sandbox API key for all development
echo 'PERSONA_API_KEY=persona_sandbox_xxxxxxxx' > .env
echo 'PERSONA_API_VERSION=2023-01-05' >> .env
Step 2: Expose Local Webhooks with ngrok
# Terminal 1: Start your webhook server
npm run dev # localhost:3000
# Terminal 2: Tunnel with ngrok
ngrok http 3000
# Copy the HTTPS URL and configure in Persona Dashboard > Webhooks
Step 3: Create Test Inquiries
import os, requests
HEADERS = {
"Authorization": f"Bearer {os.environ['PERSONA_API_KEY']}",
"Persona-Version": "2023-01-05",
}
# Create inquiry with sandbox template
resp = requests.post("https://withpersona.com/api/v1/inquiries", headers=HEADERS, json={
"data": {
"attributes": {
"inquiry-template-id": "itmpl_YOUR_SANDBOX_TEMPLATE",
"reference-id": f"test-{int(time.time())}",
}
}
})
print(f"Test inquiry: {resp.json()['data']['id']}")
Step 4: Mock API Responses for CI
import { vi } from 'vitest';
const mockPersonaApi = {
createInquiry: vi.fn().mockResolvedValue({
data: { id: 'inq_test_123', attributes: { status: 'created', 'session-token': 'tok_xxx' } },
}),
getInquiry: vi.fn().mockResolvedValue({
data: { id: 'inq_test_123', attributes: { status: 'completed' } },
}),
};
Output
- Sandbox environment configured for development
- ngrok tunnel for webhook testing
- Test inquiry creation workflow
- Mock API responses for unit tests
Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| Webhook not received | ngrok URL not configured | Update webhook URL in Dashboard |
| Sandbox key rejected | Using production key | Verify key starts with persona_sandbox_ |
| Template not found | Wrong environment | Templates are per-environment |
Resources
Next Steps
Apply SDK patterns: persona-sdk-patterns