The kept HTTP surface, all on http://localhost:44887.
No auth needed locally
Desktop mode (DEPLOY_MODE=desktop) auto-injects a local admin identity on every request, so none of these routes require a login, token, or API key when called against http://localhost:44887. CSRF protection is disabled in this mode as well.
Every path below is mounted on the Sola Merlino Fastify server (port 44887). The Antidetect Engine runs as a separate process on port 3500; the routes here proxy to it where relevant. Paths shown with :id or :accountId take a path parameter.
Brand workspaces
Create and manage BrandWorkspace records and their avatar allocations. Tiers cap avatar counts: starter 5, growth 15, scale 35, agency 75.
GET/api/brand-workspacesList all brand workspaces with tier and platform configuration.
POST/api/brand-workspacesCreate a new workspace (tier, platforms).
GET/api/brand-workspaces/:idFetch a single workspace by id.
PUT/api/brand-workspaces/:idUpdate a workspace's tier or platform list.
DELETE/api/brand-workspaces/:idRemove a workspace.
GET/api/brand-workspaces/:id/avatarsList the avatars (personas) allocated to a workspace.
POST/api/brand-workspaces/:id/avatarsAllocate a new avatar to the workspace, up to the tier cap.
Personas
Manage SyndicationPersona records — each binds a fingerprint, a proxy region, an aging stage (0–7), a status, and an avatar role.
GET/api/personasList personas across workspaces.
POST/api/personasCreate a single persona.
POST/api/personas/bulkCreate personas in batch.
GET/api/personas/templatesList persona templates for quick provisioning.
Gmail
Import, inspect, and trigger work on the Gmail account fleet. The environment ships with 121 real, active Gmail accounts preloaded.
GET/api/gmail/accountsList all Gmail accounts.
GET/api/gmail/accounts/:idFetch a single account (email, profile path, status).
GET/api/gmail/statsAggregate fleet statistics.
POST/api/gmail/accounts/:id/verifyVerify an account's credentials and session.
POST/api/gmail/accounts/:id/warmupTrigger warming for a single account.
Warming
Drive the 30-day, 5-phase warming engine — schedule due tasks, allocate to the browser pool, and read progress. See Warming for the phase model.
POST/warmup/start/:idStart warming for one account.
POST/warmup/batch-startStart warming across a batch of accounts.
POST/warmup/execute-nowForce immediate execution of due warming tasks.
GET/warmup/queueInspect the pending warming queue.
GET/warmup/progress/:accountIdRead warming progress for one account.
GET/api/warmup/statsAggregate warming statistics.
Related warming endpoints exposed for pool and browser introspection: GET /warmup/active-browsers and GET /warmup/pool-stats.
Syndication
The syndication namespace exposes accounts, personas, networks, platforms, content, tasks, warming, and rollup stats for the publishing pipeline.
GET/api/syndication/accountsAccounts participating in syndication.
GET/api/syndication/personasPersonas mapped into syndication.
GET/api/syndication/networksSyndication networks and chains.
The Universal Writer engine is mounted at /api/universal-writer/* — note this is not/api/writer/*, which is Ponmelli's proxy prefix. The Ponmelli DAM asset catalog (621 assets) is exposed under /api/ponmelli/*.
GET/api/universal-writer/*Read writer jobs, variants, and scoring output.
GET/api/ponmelli/*Browse the DAM asset catalog and approval queue.
POST/api/ponmelli/*Stage, approve, deploy, or update DAM assets.
Antidetect
Manage fingerprint profiles and proxies. These routes back the Antidetect Engine running on port 3500 (fingerprint isolation and profile↔proxy binding).
POST/api/antidetect/profilesCreate a fingerprint profile bound to a proxy.
GET/api/antidetect/proxiesList proxies with type, protocol, and health.
POST/api/antidetect/proxiesRegister a proxy (residential, datacenter, mobile, ISP, rotating).
Account pools
Read and manage grouped account pools used by the runners and warming allocator.
GET/api/account-poolsList account pools.
POST/api/account-poolsCreate or populate an account pool.
Ops
Operational and monitoring endpoints for health, proxies, the scheduler, and account-pool state.
GET/api/ops/healthService and dependency health probes.
GET/api/ops/proxiesProxy health and rotation status.
GET/api/ops/schedulerScheduler state and due-task queues.
GET/api/ops/monitoringMonitoring, queues, errors, and alerts overview.
GET/api/ops/account-poolAccount-pool capacity and allocation state.
Redis ECONNREFUSED is harmless
With REDIS_MODE=memory, the server uses an in-memory fallback. Any Redis ECONNREFUSED lines in the logs are expected and do not affect these endpoints.
Sola Merlino · social syndication + account automation · documentation generated 2026-06-27