Skip to main content

How To Use The Open Invite API

Written by Marshall
Updated over 5 months ago


Introduction

  • Purpose: This article explains how to use the Open Invite API to create or fetch invitee records for your referral or ambassador program.

  • Context: The Open Invite API allows you to manage users who have been invited to your program and users who have already registered as ambassadors. It supports both new invite creation and the retrieval of existing ambassador records.

In this guide, you’ll learn how to:

  • Use the Open Invite endpoint

  • Understand successful and error responses

  • Distinguish between InvitedAmbassador and Ambassador data


Endpoint Overview

Method: POST

Purpose: Create or retrieve an existing invitee record (either an Invited Ambassador or a Registered Ambassador).

Parameters:

  • areaGuid

    • This will be provided by the SocialLadder team and is required for the endpoint to work. If you have not received your areaGuid, please reach out to you Implementation Specialist.

  • externalUserId

    • This is the customer Id of the user that is logged into their account on your website.

The API accepts basic invitee information (such as email, tags, and custom data) and returns a structured response depending on whether the user already exists, was newly invited, or if an error occurred.

Request Model:

{
"first_name": "string",
"last_name": "string",
"email_address": "string",
"phone": {
"phone_number": "string",
"country_code": "string"
},
"custom_data": [
{
"field_name": "string",
"field_value": "string"
}
],
"tags": [
"string"
],
"promo_code": "string"
}

Fields terminology and description

  • custom_data

    • field_name: These are the custom fields created on the portal. The endpoint will only support fields which exist on the portal. Unsupported fields will be ignored.

      • In case, the field type is a predefined list, the undefined values in field_value will be ignored.

Validations:

  • areaGuid: Should be valid.

  • email_address: Should be unique.

  • externalUserId: Should be unique.


✅ Success Response Structure

Every successful API response includes the following top-level properties:

Property

Type

Description

success

boolean

Indicates whether the request was processed successfully.

code

integer

Numeric response code (see Response Codes).

message

string

Human-readable description of the result.

type

string

Defines the object type returned (e.g., Ambassador, InvitedAmbassador, Error).

data

object

Contains detailed information about the invitee or ambassador.


🧩 Response Codes

Code

Meaning

Type

Description

100

Success

Ambassador or InvitedAmbassador

User found or created successfully.

400

Bad Request

Error

Invalid parameters or email.

401

Unauthorized

Error

Invalid Area GUID.

409

Conflict

ValidationError

Duplicate validation error.

500

Server Error

Error / Exception

Internal server issue.


🧑‍💻 Response Types

Type

Description

Ambassador

The user is already registered in your program.

InvitedAmbassador

The user has been invited but not yet registered.

Error / ValidationError / Exception

The request failed (invalid input, duplicate data, or system error).


📨 Example: Invited Ambassador Created

When you invite a new user, the API returns an object of type InvitedAmbassador:

{
"success": true,
"code": 100,
"message": "Invited Ambassador created successfully",
"type": "InvitedAmbassador",
"data": {
"id": 1234,
"externalCRMId": "EXT_CRM_1234",
"inviteSent": "2025-11-06T09:19:46.91",
"status": "INVITED",
"referralLinks": [
{
"campaignName": "Campaign Name",
"trackngKey": "123e4567-e89b-12d3-a456-426655440000",
"referralLink": "https://click-myl.ink/a1b2c3d4"
}
],
"email": "example@example.com",
"promo_code": "CODE123",
"tags": ["Newsletter", "VIP"],
"custom_data": [
{ "field_name": "First_Name", "field_value": "John" },
{ "field_name": "Last_Name", "field_value": "Doe" },
{ "field_name": "Phone_Number", "field_value": "1234567890" },
{ "field_name": "EXTERNAL_CRM_ID", "field_value": "EXT_CRM_1234" }
]
}
}

Key Fields

  • inviteSent → Timestamp when the invitation was created.

  • status → "INVITED" until the user registers.

  • referralLinks → Array of referral tracking links tied to active campaigns.

  • custom_data → Your CRM or app-specific metadata.


👤 Example: Ambassador Already Exists

If the invitee is already a registered user (an Ambassador), you’ll receive this response:

JSON
{
"success": true,
"code": 100,
"message": "Ambassador already exists",
"type": "Ambassador",
"data": {
"id": 1234,
"profilePic": "https://res.cloudinary.com/socialladder/image/upload/r_max,w_150,h_150/profile.png",
"dateAdded": "2025-11-04T11:05:26.12",
"profilePicLarge": "http://res.cloudinary.com/socialladder/image/upload/w_640,h_400/profile.jpg",
"userName": "John Doe",
"salesCurrency": "USD",
"email": "example@example.com",
"status": "Active",
"promo_code": "CODE123",
"tags": ["Newsletter", "VIP"],
"custom_data": [

{ "field_name": "Phone_Number", "field_value": "+11234567890" },
{ "field_name": "EXTERNAL_CRM_ID", "field_value": "EXT_CRM_1234" },
{ "field_name": "Last_Name", "field_value": "Doe" },
{ "field_name": "First_Name", "field_value": "John" }
],
"referralLinks": [
{
"campaignName": "Campaign Name",
"trackngKey": "123e4567-e89b-12d3-a456-426655440000",
"referralLink": "https://click-myl.ink/a1b2c3d4"
}
]
}
}

Key Differences

Field

InvitedAmbassador

Ambassador

status

INVITED

ACTIVE

inviteSent

✅ Present

❌ Not applicable

profilePic / userName

❌ Not applicable

✅ Present

custom_data

May include partial fields

Full user profile fields

referralLinks


Related Articles

Did this answer your question?