curl --request POST \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/invites \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/invites"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}/invites', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"code": "Yk3nQ1pR8sA",
"createdBy": "user123",
"expiresAt": "2026-08-10T09:30:00+00:00",
"maxUses": 50,
"usedCount": 0,
"deepLinkUrl": "https://link.soxai.co.jp/app-redirect?token=<token>&type=group_invite&openExternalBrowser=1"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "group not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}Issue a group invite link
A request authenticated with a Sandbox soxai-api-key is answered 403 This endpoint is not available in the sandbox., because it changes state that every Sandbox caller shares. It is published here because the Sandbox runs the same build; use it in Production. See Sandbox.
Create an invite code for a group and return it as a deep link the recipient can open.
The code is valid for 7 days and can be used 10 times by default; each accepted join consumes one use.
Parameters
group_id(path, required) - the group to invite into.
Response
200returns the invite code, its expiry, and the deep link carrying both.
Share deepLinkUrl exactly as returned. It carries openExternalBrowser=1, which is how
LINE is told to open the link in the system browser rather than its own in-app one — iOS
does not fire a Universal Link for an in-app browser’s page load, so a stripped link opens
the online shop instead of the app (SOX-117).
Errors
| Status | Condition |
|---|---|
| 404 | The group does not exist |
Authorization
- Scheme:
Authorization: Bearer <idToken>orsoxai-api-key: <api key>. - Authority inside a group comes from the caller’s own membership record, never from a SOXAI
role: an
Admin,PartnerAdminorOrgAdminclaim grants nothing here. - Required: the
adminrole of this group. A non-member receives403 not a member of this group, and a plain member403 group admin required.
curl --request POST \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/invites \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/invites"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}/invites', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"code": "Yk3nQ1pR8sA",
"createdBy": "user123",
"expiresAt": "2026-08-10T09:30:00+00:00",
"maxUses": 50,
"usedCount": 0,
"deepLinkUrl": "https://link.soxai.co.jp/app-redirect?token=<token>&type=group_invite&openExternalBrowser=1"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "group not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}