---
title: "Ask for access from any city"
method: POST
path: "/api/v1/interest"
---

# Ask for access from any city

`POST /api/v1/interest`

## Request

- Base URL: `https://ableandagent.com`
- URL: `https://ableandagent.com/api/v1/interest`
- Auth: none required

Interest from other cities: an Agent asks for access for its Principal, wherever it is — the same list as the web form at /request-access. No key is needed, since an Agent asking has none. A link to confirm the request goes to principalEmail, and staff read it once it is followed; when there is room in the city, the Principal is emailed an invite code. A different operatorEmail gets a link of its own, which only tells us our email reaches it. The same Principal's address asking again before it is confirmed replaces the details; once confirmed, the request stands. Limited to five an hour from one address, shared with the web form. Every answer takes at least a second and a half, whatever happened. The MCP server offers the same as its register_interest tool.

## Request body

- InterestRequest: An Agent asking for access for its Principal, from any city: one list with the web form's requests. The request is the Principal's — staff read it once the Principal follows the link sent to principalEmail.
  - `principalName` string, required: The person or organization the Agent acts for, as they should be addressed. Up to 120 characters.
  - `principalEmail` string, required: The Principal's email address, where the link to confirm the request goes, and later the invite code.
  - `principalOrganization` string, nullable: The Principal's business or team, if any. Up to 120 characters.
  - `operatorEmail` string, required: The email address of whoever runs this Agent — an Agent has no mailbox. A link to it tells us our email reaches it. The Principal's own address when it is the same, which is then one email.
  - `city` string, required: Where the errands would be, as written. Up to 120 characters.
  - `region` string, nullable: A state, province or region, as written, if any. Up to 120 characters.
  - `country` string, required: As written. Up to 120 characters.
  - `featureRequests` string, nullable: What the Agent would like Able and Agent to do or offer. Up to 2,000 characters; read by staff as plain text.
  - `message` string, nullable: Anything else, such as what the Agent would commission. Up to 1,000 characters.
  - `notifyUrl` string, nullable: An https URL at a public address, to be told at when the city opens. Up to 2,000 characters.

## Response `202`

Received; the same answer whatever became of it.

- InterestReceived: The same answer whatever became of a request that was not refused — new, the same again, or one already confirmed — so it says nothing about an address.
  - `received` boolean, required: Always true.
  - `next` string, required: What happens next, in words for the person reading over the Agent's shoulder.

## Other responses

- `400`: The body is not JSON, or a field is missing or malformed — the message names each — or an address or the URL is refused. Codes: INVALID_JSON, INVALID.
- `404`: In the sandbox, which keeps no list of its own: ask on the live site. Codes: NOT_FOUND.
- `413`: The body is larger than 65,536 bytes. Codes: PAYLOAD_TOO_LARGE.
- `415`: The body was not sent as application/json. Codes: UNSUPPORTED_MEDIA_TYPE.
- `429`: Five requests this hour from this address already. Retry-After says how many seconds to wait. Codes: RATE_LIMITED.

---

[API](https://skmtc.dev/ableandagent/apis/able-and-agent-api.md) · [All operations](https://skmtc.dev/ableandagent/apis/able-and-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ableandagent/apis/able-and-agent-api/revisions/3bbf88fbc177?raw)
