POST /api/groups/registerAdds a contact to a group from a form you host yourself, and records the opt-in evidence Meta expects. This is the API behind the join link, exposed so you can build your own form.
Headers
| Header | Required | Value |
|---|---|---|
Content-Type | Yes | application/json |
No API key. The endpoint is public by design because the form is on your own site. MsgOrb still verifies that the group belongs to the organisation, so a forged pairing is rejected.
Body fields
| Field | Required | Description |
|---|---|---|
org_id | Yes | Your organisation id |
group_id | Yes | The group the contact joins. Must belong to org_id |
name | Yes | Contact name |
phone | Yes | Full international format with country code |
Find both ids in the share link on the group page: /join/<org_id>/<group_id>.
Request example
curl -X POST "https://msgorb.com/api/groups/register" \
-H "Content-Type: application/json" \
-d '{
"org_id": "YOUR_ORG_ID",
"group_id": "YOUR_GROUP_ID",
"name": "Jane Doe",
"phone": "+15551234567"
}'Responses
{ "success": true, "member_id": "mem_...", "created": true }| Status | Meaning |
|---|---|
| 200 | Added (created: true) or an existing contact was refreshed (updated: true) |
| 400 | Missing field, malformed JSON, or an unusable phone number |
| 403 | The workspace has reached its member limit |
| 404 | org_id and group_id do not belong together |
| 500 | Write failed |
| 503 | Service unavailable |
What is recorded
Every accepted registration stores the timestamp, the submitter's IP address and the source. Registering an existing number updates that contact instead of creating a duplicate, and refreshes the consent record.
Contacts added this way are Active immediately. The auto-accept setting on Team Access governs the join-link form, not this endpoint.