API Documentation
Base URL: https://connect369.vercel.app/api/v1
Authentication
Pass your API key as a bearer token. Create one from Dashboard → API & Webhooks.
curl https://connect369.vercel.app/api/v1/balance \ -H "Authorization: Bearer c369_live_..."
read-scope keys can call GET endpoints only. full-access keys are required to buy numbers, cancel, and manage webhooks.
Endpoints
GET
/v1/balanceread keyGet your wallet balance.
GET
/v1/countriesread keyList supported countries.
GET
/v1/apps?country=USread keyList apps and live pricing for a country.
POST
/v1/numbersfull keyBuy a virtual number. Body: { country, app, area_code? }
GET
/v1/numbers/{id}/smsread keyPoll for the SMS/OTP received on a number.
POST
/v1/numbers/{id}/cancelfull keyCancel a number and refund your wallet.
GET
/v1/orders?status=&country=&app=&from=&to=read keyList your order history.
POST
/v1/webhooksfull keyRegister a webhook endpoint. Body: { url }
GET
/v1/webhooksread keyList your registered webhook endpoints.
Webhook signature verification
Every webhook delivery includes an X-Connect369-Signature header — an HMAC-SHA256 of the raw request body, signed with the secret returned when you registered the endpoint.
const expected = crypto
.createHmac("sha256", webhookSecret)
.update(rawBody)
.digest("hex");
if (expected !== req.headers["x-connect369-signature"]) {
throw new Error("Invalid signature");
}