Proxies (advanced)
A proxy lets one channel's requests leave Sosyabot from an address you choose instead of from the server itself. Agencies use it to keep two clients' accounts off a shared IP. If nobody has told you to use one, you can ignore this page.
Add a proxy
Open Proxies and add one
Paste the address your provider gave you. Both forms work:
1.2.3.4:8080
username:password@1.2.3.4:8080
https://proxy.example.com:3128No scheme means http, which is what that shorthand means everywhere else. SOCKS proxies are read but not supported yet, and Sosyabot says so rather than accepting one and quietly ignoring it.
An address Sosyabot cannot read is refused when you save it, not months later when a scheduled post fails.
Test it
Open the row's Actions → Test. The result is stored on the row, so you can still see it tomorrow.
If your administrator has set PROXY_TEST_URL, the test reports the address your traffic actually leaves from — the thing you assigned a proxy for. Without it, the test can only confirm the proxy is listening, and says exactly that instead of showing a tick for something it did not check.
Assign it to a channel
Go to Channels and pick the proxy under Outbound address on the channel you want. Leave it on This server (direct) for every channel that should carry on as before.
What goes through the proxy
Everything Sosyabot asks the platform to do for that channel: publishing, refreshing the connection, reading post results, and checking the inbox.
What does not
Photos and videos. Instagram, TikTok photos and Telegram media do not accept an upload — they take a link, and the platform then downloads the file from Sosyabot directly. Those bytes leave from the server's own address, outside the proxy. On Instagram this is permanent: the API takes a URL and nothing else.
Also outside: signing in to Sosyabot, AI generation, e-mail, payments and storage. Those are Sosyabot's own traffic, not your channel's.
Good to know
- A broken proxy stops the post; it does not quietly go direct. You assigned it so traffic would not leave from the default address — sending it there anyway and reporting success would break the one guarantee it exists for.
- Deleting or switching off a proxy that a channel uses makes that channel fail with a message naming it. Clear the channel's outbound address first.
- Private addresses are refused (
127.0.0.1,10.x,192.168.x, and so on) unless your administrator setsPROXY_ALLOW_PRIVATE=true. - Your password is never shown back to you, never logged, and never in an error message.
Related
For developers
Egress is per account. A channel row carries proxy_id; when it is set, that account's provider calls run inside an async context that supplies an undici ProxyAgent to fetch, an HttpsProxyAgent to node-fetch, and an httpAgent to twitter-api-v2. Nothing process-wide is ever set, so Qevron, Stripe, SMTP and storage are untouched.
GET /api/v1/proxies list
GET /api/v1/proxies/:id fetch one
POST /api/v1/proxies create
POST /api/v1/proxies/:id/test connect and report the exit IP
PUT /api/v1/proxies/:id update
DELETE /api/v1/proxies/:id delete
PATCH /api/v1/proxies/bulk/status bulk enable/disable
POST /api/v1/proxies/bulk/delete bulk delete
PATCH /api/v1/accounts/:id/proxy assign to a channel (editor+)Environment: PROXY_ALLOW_PRIVATE (default false), PROXY_CONNECT_TIMEOUT_MS (default 15000), PROXY_TEST_URL (unset).