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
}
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
}
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
}