Create a key to copy examples filled with your team.

Clusters

Shared-IP sending environments.

Create a shared-IP sending cluster. KYC must be approved first. Suspend and resume match the cluster page. Send on smtp_endpoint (port 587) or http_endpoint (POST /api/inject/v1) with the SMTP username and password.

GET /api/v1/teams/:team_id/clusters

List clusters for the token's team.

request.sh
1 curl -sS -X GET \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 https://postshiba.com/api/v1/teams/1/clusters
response.json
1 [
2 {
3 "id": 4,
4 "name": "edge",
5 "region": "manual",
6 "size": "small",
7 "plan": "nano",
8 "emails_per_hour": 200,
9 "ip_assignment": "shared",
10 "desired_status": "active",
11 "status": "active",
12 "smtp_endpoint": "smtp.capsule.test:587",
13 "http_endpoint": "smtp.capsule.test:8000",
14 "assigned_ip": {
15 "address": "203.0.113.50",
16 "status": "assigned"
17 },
18 "sending_ready": true
19 }
20 ]

GET /api/v1/clusters/:id

Get one cluster, including computed status, SMTP, and HTTP inject.

  • id: Cluster id
request.sh
1 curl -sS -X GET \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 https://postshiba.com/api/v1/clusters/:cluster_id
response.json
1 {
2 "id": 4,
3 "name": "edge",
4 "region": "manual",
5 "size": "small",
6 "plan": "nano",
7 "emails_per_hour": 200,
8 "ip_assignment": "shared",
9 "desired_status": "active",
10 "status": "active",
11 "smtp_endpoint": "smtp.capsule.test:587",
12 "http_endpoint": "smtp.capsule.test:8000",
13 "assigned_ip": {
14 "address": "203.0.113.50",
15 "status": "assigned"
16 },
17 "sending_ready": true
18 }

POST /api/v1/teams/:team_id/clusters

Create a shared-IP cluster. Returns 403 {error: kyc_required} before KYC.

request.sh
1 curl -sS -X POST \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 -H 'Content-Type: application/json' \
4 -d '{"cluster":{"name":"edge","size":"small","region":"manual","plan":"nano"}}' \
5 https://postshiba.com/api/v1/teams/1/clusters
response.json
1 {
2 "id": 4,
3 "name": "edge",
4 "region": "manual",
5 "size": "small",
6 "plan": "nano",
7 "emails_per_hour": 200,
8 "ip_assignment": "shared",
9 "desired_status": "active",
10 "status": "active",
11 "smtp_endpoint": "smtp.capsule.test:587",
12 "http_endpoint": "smtp.capsule.test:8000",
13 "assigned_ip": {
14 "address": "203.0.113.50",
15 "status": "assigned"
16 },
17 "sending_ready": true
18 }

POST /api/v1/clusters/:id/suspend

Pause sending. Same as Cluster#suspend!.

  • id: Cluster id
request.sh
1 curl -sS -X POST \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 -H 'Content-Type: application/json' \
4 https://postshiba.com/api/v1/clusters/:cluster_id/suspend
response.json
1 {
2 "id": 4,
3 "name": "edge",
4 "region": "manual",
5 "size": "small",
6 "plan": "nano",
7 "emails_per_hour": 200,
8 "ip_assignment": "shared",
9 "desired_status": "suspended",
10 "status": "suspended",
11 "smtp_endpoint": "smtp.capsule.test:587",
12 "http_endpoint": "smtp.capsule.test:8000",
13 "assigned_ip": {
14 "address": "203.0.113.50",
15 "status": "assigned"
16 },
17 "sending_ready": false
18 }

POST /api/v1/clusters/:id/resume

Resume sending. Same as Cluster#resume!.

  • id: Cluster id
request.sh
1 curl -sS -X POST \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 -H 'Content-Type: application/json' \
4 https://postshiba.com/api/v1/clusters/:cluster_id/resume
response.json
1 {
2 "id": 4,
3 "name": "edge",
4 "region": "manual",
5 "size": "small",
6 "plan": "nano",
7 "emails_per_hour": 200,
8 "ip_assignment": "shared",
9 "desired_status": "active",
10 "status": "active",
11 "smtp_endpoint": "smtp.capsule.test:587",
12 "http_endpoint": "smtp.capsule.test:8000",
13 "assigned_ip": {
14 "address": "203.0.113.50",
15 "status": "assigned"
16 },
17 "sending_ready": true
18 }

About

PostShiba is the transactional email platform that powers Bento behind the scenes. You can build your own products, like Bento, on top of it.

© 2026 PostShiba by Backpack Internet Pty. Ltd. All rights reserved.

The same policies that govern Bento are applied to PostShiba Privacy | Terms | Security