Issue a group invite link
curl --request POST \
--url https://web-api.soxai.site/api/groups/{group_id}/invites \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.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.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>"
}Family Groups
Issue a group invite link
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.
POST
/
api
/
groups
/
{group_id}
/
invites
Issue a group invite link
curl --request POST \
--url https://web-api.soxai.site/api/groups/{group_id}/invites \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.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.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>"
}