Which countries a provider offers, bringing an exit up, moving it, taking a fresh address in the same country, and checking where the world actually sees you. That last check is what the others are judged against: a switch that quietly left traffic where it was is the failure this exists to rule out.
7 calls. Pick one to open it, or use the list on the right.
GET/exitWays to come out somewhere else
Every configured exit with its live state, the country it was asked to appear in, and the country it actually appears in. Those last two disagreeing is the whole reason this reports both.
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.list();
GET/exit/{id}/countriesCountries one exit can reach
Where this exit can put you, ranked by how much capacity is really there. Asked of the provider when it answers and taken from a built-in list when it does not, and the answer says which of those you got.
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.countries({ "id": "a1b2c3d4"});
POST/exit/{id}/startBring an exit upstream
Starts the exit in the country it was configured for. Streamed, because a first start fetches a catalogue, raises a tunnel and then checks the address, which takes tens of seconds on the free providers and can fail at each step with something worth reading. Starting one that is already up simply says so.
What you send
Field
Type
Where
idrequiredWhich exit
string
address
What comes back
Field
Type
when event is "message"
shape
data
object
kind
string
id
string
retry
number
when event is "done"
shape
data
unknown
id
string
retry
number
when event is "error"
shape
data
unknown
id
string
retry
number
Try itanswered in this tab
curl
curl -N -X POST "$SANDBOX/exit/a1b2c3d4/start" \ -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.start({ "id": "a1b2c3d4"});
POST/exit/{id}/useMove to another countrystream
Switches the exit's country, starting it first if it was down. It ends by checking where the world actually sees you and fails if that does not match what you asked for. A switch that quietly left your traffic where it was is the exact failure this whole feature exists to rule out.
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.use({ "id": "a1b2c3d4", "country": "DE"});
POST/exit/{id}/rotateTake a different address, same countrystream
Swaps to another address in the country you are already in. Fails if the address does not actually change, which on a small pool it sometimes cannot.
What you send
Field
Type
Where
idrequiredWhich exit
string
address
What comes back
Field
Type
when event is "message"
shape
data
object
kind
string
id
string
retry
number
when event is "done"
shape
data
unknown
id
string
retry
number
when event is "error"
shape
data
unknown
id
string
retry
number
Try itanswered in this tab
curl
curl -N -X POST "$SANDBOX/exit/a1b2c3d4/rotate" \ -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.rotate({ "id": "a1b2c3d4"});
POST/exit/{id}/checkWhere the world sees you right now
Looks up the address and country as seen through this exit. Cheap, and the honest answer to whether you are really where you meant to be, which is what every other call here is judged against.
What you send
Field
Type
Where
idrequiredWhich exit
string
address
What comes back
Field
Type
ipThe address the world sees, looked…
string
countryWhich country that address is in
string
countryNameThat country's name, spelled out
string
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/exit/a1b2c3d4/check" \ -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.check({ "id": "a1b2c3d4"});
POST/exit/{id}/stopTake an exit down
Shuts the exit off. One that was already down is fine: the promise is that it is not up afterwards, not that it was up before.
What you send
Field
Type
Where
idrequiredWhich exit
string
address
What comes back
Field
Type
okAlways true
true
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/exit/a1b2c3d4/stop" \ -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";const result = await sandbox.exit.stop({ "id": "a1b2c3d4"});