Overview
Automate Unbind from your own code or from an AI agent.
Everything the Unbind UI does goes through the same HTTP API you can call yourself. There are two ways to use it:
- The HTTP API, for scripts, CI pipelines and your own tools.
- The MCP server, for AI agents like Claude and ChatGPT. It exposes the same operations as tools. See Connect a Client.
Both use the same permissions. A key or an app can never do more than the person who created it.
Base URL
The API lives on your own instance, under /api/go:
https://unbind.example.com/api/goYour instance also serves an interactive reference for its exact version at https://unbind.example.com/docs, and the OpenAPI document at /api/go/openapi.json.
Your first request
Create an API key, then:
curl https://unbind.example.com/api/go/teams/list \
-H "Authorization: Bearer unb_your_key"{
"data": [
{
"id": "9e4d3b2b-30e0-4f71-bfca-f14c97781035",
"name": "Acme",
"created_at": "2026-08-21T02:11:38.662332Z"
}
]
}Conventions
The API is consistent, so once you have used one operation you know them all.
- Paths end in a verb:
/services/list,/services/get,/services/create,/services/update,/services/delete. - Reads are
GETwith query parameters. There are no path parameters anywhere. - Writes are
POST,PUTorDELETEwith a JSON body. That includesDELETE. - Responses are wrapped in
data:{"data": ...}. - IDs are UUIDs, and timestamps are RFC 3339 in UTC.
Resources are nested
Resources nest as team > project > environment > service, and most operations need the ID of every level above the one they act on:
curl "https://unbind.example.com/api/go/services/list?team_id=$TEAM&project_id=$PROJECT&environment_id=$ENV" \
-H "Authorization: Bearer $UNBIND_API_KEY"Find the IDs with /teams/list, /projects/list, /environments/list and /services/list.
Pagination
Lists that can grow take per_page, from 1 to 100, and a cursor. The cursor is a timestamp. Pass the next value from the previous response to get the following page:
{
"data": {
"deployments": [],
"metadata": { "has_next": true, "next": "2026-09-17T20:33:27.950294Z" }
}
}Changing a service does not roll it out
Creating or updating a service only saves its configuration. Call POST /deployments/create to build and deploy it. Variable changes ship with the next deployment as well. Deploy from CI shows the whole flow.
Names
Names are unique among siblings and case sensitive. Creating or renaming into a taken name answers 409 conflict. Four operations keep going instead and add a short suffix to the name: create-service, create-service-group, create-volume and deploy-template. Read the name from the response instead of assuming the one you sent.
What is in the reference
The reference lists every operation an API key can call. A few areas are left out because they only work from a signed-in browser session: managing API keys and connected apps, connecting GitHub, system settings, users and groups, and the terminal.