A multi-tenant Voice AI platform API built with Laravel and SQLite.
- PHP 8.2+
- Composer
- SQLite
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate --seedOrganizations, users, and API keys are managed from the command line.
php artisan org:create "My Company"With options:
php artisan org:create "My Company" --plan=pro --billing=postpaid --region=us-east-1| Option | Values | Default |
|---|---|---|
--plan |
free, starter, pro, enterprise |
free |
--billing |
prepaid, postpaid |
prepaid |
--region |
any string | (none) |
On success you'll see the organization ID — copy it for the next step.
php artisan user:create admin@example.com "Admin User" --password=secret123Attach the user to an organization:
php artisan user:create admin@example.com "Admin User" \
--password=secret123 \
--organization=<organization_id> \
--role=ownerWith options:
| Option | Values | Default |
|---|---|---|
--password |
any string, minimum 8 chars | (prompt) |
--status |
active, inactive, suspended |
active |
--organization |
existing organization UUID | (none) |
--role |
owner, admin, member |
member |
--member-status |
active, invited, disabled |
active |
php artisan apikey:generate <organization_id>Example:
php artisan apikey:generate 019cf778-2b49-73be-96af-3b126fb61e9cWith options:
php artisan apikey:generate <organization_id> --scope=read| Option | Values | Default |
|---|---|---|
--scope |
full, read, sub_account |
full |
--user_id |
existing user UUID | (auto) |
Store the token securely — it cannot be retrieved again.
All API endpoints require the Authorization header:
curl -H "Authorization: Bearer va_xxxxx_xxxxx" \
http://localhost:8000/api/v2/providers/catalogphp artisan tinker --execute="App\Models\Organization::all(['id','name','plan_code'])->toJson(JSON_PRETTY_PRINT)"Start the dev server and visit the interactive docs:
php artisan serveOpen http://localhost:8000/docs/api in your browser.
The docs UI includes a Try It panel — paste your Bearer token to test endpoints directly.
A built-in Adminer UI is available to browse tables/columns and edit rows.
- URL: http://localhost:8000/db-admin
- Access: local environment only
- Autologin: enabled for current Laravel DB connection (SQLite in this project)
You can change route/autologin with env variables:
ADMINER_ROUTE_PREFIX=db-admin
ADMINER_AUTO_LOGIN=true
ADMINER_ENABLED=true