GrowSurf · Schema
Participant
Detailed information about a program participant.
ReferralsMarketingSoftware-as-a-ServiceHealthcareFintechCompany
Properties
| Name | Type | Description |
|---|---|---|
| id | string | The unique identifier of the participant. |
| isAffiliate | boolean | Affiliate programs only. Whether this participant is an enrolled affiliate. A referred customer who has not joined the program is `false`. |
| affiliateStatus | stringnull | Affiliate programs only. The enrolled affiliate's status (`APPROVED`, `SUSPENDED`, or `BANNED`). `null` for participants who are not affiliates. |
| affiliateEnrollmentSource | stringnull | Affiliate programs only. How the affiliate enrolled (`OPEN_ENROLLMENT`, `APPLICATION`, `PARTICIPANT_AUTH`, `INVITE`, `REST_API`, `CSV`, or `DASHBOARD`). `null` when not recorded. |
| firstName | stringnull | The first name of the participant. |
| lastName | stringnull | The last name of the participant. |
| string | The email of the participant. | |
| paypalEmailAddress | string | The PayPal email address on file for the participant, used for affiliate or PayPal reward payouts. |
| referralCount | integer | The total number of referrals made by the participant. |
| monthlyReferralCount | integer | The total number of referrals made this month by the participant (resets at the end of the month). |
| prevMonthlyReferralCount | integer | The total number of referrals made the previous month by the participant. |
| leadCount | integer | The number of pending referrals the participant made that have not converted into successful referrals yet. Not cumulative: it goes down when a lead converts. |
| rank | integer | The rank of the participant. |
| monthlyRank | integer | The monthly rank of the participant. This rank resets to 0 at the end of each month. |
| prevMonthlyRank | integer | The previous monthly rank of the participant. Not returned if the participant did not exist in your program during the previous month. |
| shareUrl | string | The unique share URL of the participant. Omitted for affiliate program participants who are not approved affiliates. |
| createdAt | integer | The date the participant was added to the program (UTC milliseconds). |
| referralSource | object | The source of how the participant joined the program. |
| referralStatus | object | If the participant was referred, the referrer's status in receiving the referral credit. Only applicable if the participant was referred into the program. |
| referredBy | string | The ID of the referrer. Only applicable if the participant was referred into the program. |
| referralLeadQualifiedAt | integernull | When this referred signup counted as a lead for the referrer, in Unix milliseconds. Set only when the program's `referralTrigger` is `CUSTOM`. Lead-event Campaign Rewards and commissions use it. |
| fraudRiskLevel | object | A value that represents the integrity of the participant. |
| fraudReasonCode | string | Machine-readable label for the participant's `fraudRiskLevel`. The label identifies broad outcomes such as unique or duplicate participant data, suspicious referral activity, configured access rules, |
| isWinner | boolean | `true` if the participant has earned one or more rewards. |
| shareCount | object | An object containing counts of how many times the participant has shared their referral link, keyed by channel. Standard web channels include `email`, `facebook`, and `twitter`; SDK/native-share chann |
| impressionCount | integer | The total number of impressions the participant has made. |
| uniqueImpressionCount | integer | The total number of unique impressions the participant has made. |
| inviteCount | integer | The total number of invites the participant has sent. |
| referrals | array | A list of `Participant` IDs who were successfully referred by the participant. Limited to the 100 most recently referred friends. |
| monthlyReferrals | array | A list of `Participant` IDs successfully referred by the participant this month (resets at the end of the month). Limited to the 100 most recent. |
| referrer | object | An object containing the participant's referrer information. Only applicable if the participant was referred into the program. |
| ipAddress | stringnull | The IP address recorded for the participant, or `null` when unavailable. |
| fingerprint | stringnull | The browser identifier recorded for the participant, or `null` when unavailable. |
| mobileInstanceId | stringnull | App-install scoped identifier supplied by a native app, or `null` when unavailable. The official mobile SDKs generate a lowercase UUID. Not stored when strict GDPR/CCPA mode is enabled. |
| metadata | object | An object containing any custom key-value data, useful for saving additional data for the participant (e.g., `company`, `companySize`). Metadata is never used by GrowSurf and usage is optional. Metada |
| notes | stringnull | Internal notes about the participant, added via the [GrowSurf Dashboard](https://growsurf.com/dashboard). |
| unsubscribed | boolean | `true` if the participant has unsubscribed from program emails. |
| language | string | The language of the participant's portal and program emails. The program's base language unless the participant (or you) picked another of the program's languages. |
| rewards | array | A list of the rewards the participant has earned. |
| vanityKeys | array | The list of vanity keys that the participant has. |
| unreadCommissionsCount | integer | Affiliate programs only. The number of commissions the participant has not yet viewed. |
| unreadPayoutsCount | integer | Affiliate programs only. The number of payouts the participant has not yet viewed. |
| isNew | boolean | Whether this participant was newly created by the request. Returned by participant creation calls; `false` when the participant already existed. |
| allMatchingFraudsters | array | A list of other participant IDs associated with this participant's fraud status. |
| payoutSettings | object | Payout-related actions the participant must complete before a payout can be released (e.g. configuring a payout destination or submitting a W-9/W-8 tax form). Always present; the requiredActions array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/growsurf-com/json-schema/growsurf-com-participant-schema.json",
"title": "Participant",
"description": "Detailed information about a program participant.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/growsurf-com-openapi.json#/components/schemas/Participant",
"type": "object",
"required": [
"id",
"referralCount",
"monthlyReferralCount",
"rank",
"monthlyRank",
"rewards",
"email"
],
"properties": {
"id": {
"type": "string",
"readOnly": true,
"description": "The unique identifier of the participant."
},
"isAffiliate": {
"type": "boolean",
"readOnly": true,
"description": "Affiliate programs only. Whether this participant is an enrolled affiliate. A referred customer who has not joined the program is `false`."
},
"affiliateStatus": {
"type": [
"string",
"null"
],
"readOnly": true,
"description": "Affiliate programs only. The enrolled affiliate's status (`APPROVED`, `SUSPENDED`, or `BANNED`). `null` for participants who are not affiliates."
},
"affiliateEnrollmentSource": {
"type": [
"string",
"null"
],
"readOnly": true,
"description": "Affiliate programs only. How the affiliate enrolled (`OPEN_ENROLLMENT`, `APPLICATION`, `PARTICIPANT_AUTH`, `INVITE`, `REST_API`, `CSV`, or `DASHBOARD`). `null` when not recorded."
},
"firstName": {
"type": [
"string",
"null"
],
"description": "The first name of the participant."
},
"lastName": {
"type": [
"string",
"null"
],
"description": "The last name of the participant."
},
"email": {
"type": "string",
"description": "The email of the participant."
},
"paypalEmailAddress": {
"type": "string",
"format": "email",
"readOnly": true,
"description": "The PayPal email address on file for the participant, used for affiliate or PayPal reward payouts."
},
"referralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made by the participant."
},
"monthlyReferralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made this month by the participant (resets at the end of the month)."
},
"prevMonthlyReferralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made the previous month by the participant."
},
"leadCount": {
"type": "integer",
"readOnly": true,
"description": "The number of pending referrals the participant made that have not converted into successful referrals yet. Not cumulative: it goes down when a lead converts."
},
"rank": {
"type": "integer",
"readOnly": true,
"description": "The rank of the participant."
},
"monthlyRank": {
"type": "integer",
"readOnly": true,
"description": "The monthly rank of the participant. This rank resets to 0 at the end of each month."
},
"prevMonthlyRank": {
"type": "integer",
"readOnly": true,
"description": "The previous monthly rank of the participant. Not returned if the participant did not exist in your program during the previous month."
},
"shareUrl": {
"type": "string",
"readOnly": true,
"description": "The unique share URL of the participant. Omitted for affiliate program\nparticipants who are not approved affiliates."
},
"createdAt": {
"type": "integer",
"format": "int64",
"readOnly": true,
"description": "The date the participant was added to the program (UTC milliseconds)."
},
"referralSource": {
"$ref": "#/$defs/ReferralSource",
"readOnly": true,
"description": "The source of how the participant joined the program."
},
"referralStatus": {
"$ref": "#/$defs/ReferralStatus",
"description": "If the participant was referred, the referrer's status in receiving the referral credit. Only applicable if the participant was referred into the program."
},
"referredBy": {
"type": "string",
"description": "The ID of the referrer. Only applicable if the participant was referred into the program."
},
"referralLeadQualifiedAt": {
"type": [
"integer",
"null"
],
"format": "int64",
"readOnly": true,
"description": "When this referred signup counted as a lead for the referrer, in Unix milliseconds. Set only when the program's `referralTrigger` is `CUSTOM`. Lead-event Campaign Rewards and commissions use it."
},
"fraudRiskLevel": {
"$ref": "#/$defs/FraudRiskLevel",
"readOnly": true,
"description": "A value that represents the integrity of the participant."
},
"fraudReasonCode": {
"type": "string",
"readOnly": true,
"description": "Machine-readable label for the participant's `fraudRiskLevel`. The label identifies broad\noutcomes such as unique or duplicate participant data, suspicious referral activity,\nconfigured access rules, or a manual update.\n\nCurrent labels include `UNIQUE_IDENTITY`, `DUPLICATE_EMAIL`, `DUPLICATE_IDENTITY`,\n`DUPLICATE_IDENTITY_EXCESSIVE`, `EMAIL_FRAUD`, `SIMILAR_EMAIL`, `SIMILAR_FIRST_NAME`,\n`SIMILAR_LAST_NAME`, `REFERRAL_EMAIL_PATTERN`, `REFERRAL_CHAIN_FRAUD`,\n`REFERRAL_VELOCITY_FRAUD`, `DOMAIN_CLUSTERING_FRAUD`, `MANUAL_UPDATE`, `WHITELISTED`,\n`BLACKLIST_MATCH`, `BLOCKED_IP`, and `REFERRER_HIGH_RISK`. Treat this as a diagnostic\nlabel because GrowSurf can add labels without notice."
},
"isWinner": {
"type": "boolean",
"readOnly": true,
"description": "`true` if the participant has earned one or more rewards."
},
"shareCount": {
"type": "object",
"readOnly": true,
"additionalProperties": {
"type": "integer"
},
"description": "An object containing counts of how many times the participant has shared their referral link, keyed by channel. Standard web channels include `email`, `facebook`, and `twitter`; SDK/native-share channels include `iosNativeShare` and `androidNativeShare`."
},
"impressionCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of impressions the participant has made."
},
"uniqueImpressionCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of unique impressions the participant has made."
},
"inviteCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of invites the participant has sent."
},
"referrals": {
"type": "array",
"readOnly": true,
"items": {
"type": "string"
},
"description": "A list of `Participant` IDs who were successfully referred by the participant. Limited to the 100 most recently referred friends."
},
"monthlyReferrals": {
"type": "array",
"readOnly": true,
"items": {
"type": "string"
},
"description": "A list of `Participant` IDs successfully referred by the participant this month (resets at the end of the month). Limited to the 100 most recent."
},
"referrer": {
"readOnly": true,
"oneOf": [
{
"$ref": "#/$defs/ParticipantReferrer"
},
{
"type": "null"
}
],
"description": "An object containing the participant's referrer information. Only applicable if the participant was referred into the program."
},
"ipAddress": {
"type": [
"string",
"null"
],
"description": "The IP address recorded for the participant, or `null` when unavailable."
},
"fingerprint": {
"type": [
"string",
"null"
],
"description": "The browser identifier recorded for the participant, or `null` when unavailable."
},
"mobileInstanceId": {
"type": [
"string",
"null"
],
"description": "App-install scoped identifier supplied by a native app, or `null` when unavailable. The official mobile SDKs generate a lowercase UUID. Not stored when strict GDPR/CCPA mode is enabled."
},
"metadata": {
"$ref": "#/$defs/Metadata",
"description": "An object containing any custom key-value data, useful for saving additional data for the participant (e.g., `company`, `companySize`). Metadata is never used by GrowSurf and usage is optional. Metadata is returned only in REST API calls, and never in JavaScript Web API calls. See [API Guidelines](https://docs.growsurf.com/developer-tools/rest-api/api-guidelines)."
},
"notes": {
"type": [
"string",
"null"
],
"description": "Internal notes about the participant, added via the [GrowSurf Dashboard](https://growsurf.com/dashboard)."
},
"unsubscribed": {
"type": "boolean",
"description": "`true` if the participant has unsubscribed from program emails."
},
"language": {
"type": "string",
"enum": [
"en",
"es",
"fr",
"de",
"it",
"pt-BR",
"nl",
"pl",
"sv",
"tr",
"ja",
"ko",
"zh-CN",
"id",
"da",
"nb",
"nn",
"fi",
"is",
"cs",
"sk",
"hu",
"ro",
"hr",
"sl",
"et",
"lv",
"lt",
"el",
"bg",
"uk",
"ru",
"pt-PT",
"ca",
"vi",
"ms",
"fil",
"af",
"sw",
"zh-TW",
"es-419"
],
"description": "The language of the participant's portal and program emails. The program's base language unless the participant (or you) picked another of the program's languages."
},
"rewards": {
"type": "array",
"readOnly": true,
"items": {
"$ref": "#/$defs/ParticipantReward"
},
"description": "A list of the rewards the participant has earned."
},
"vanityKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "The list of vanity keys that the participant has."
},
"unreadCommissionsCount": {
"type": "integer",
"readOnly": true,
"description": "Affiliate programs only. The number of commissions the participant has not yet viewed."
},
"unreadPayoutsCount": {
"type": "integer",
"readOnly": true,
"description": "Affiliate programs only. The number of payouts the participant has not yet viewed."
},
"isNew": {
"type": "boolean",
"readOnly": true,
"description": "Whether this participant was newly created by the request. Returned by participant creation calls; `false` when the participant already existed."
},
"allMatchingFraudsters": {
"type": "array",
"readOnly": true,
"items": {
"type": "object",
"additionalProperties": true
},
"description": "A list of other participant IDs associated with this participant's fraud status."
},
"payoutSettings": {
"type": "object",
"readOnly": true,
"description": "Payout-related actions the participant must complete before a payout can be released (e.g. configuring a payout destination or submitting a W-9/W-8 tax form). Always present; the requiredActions array is empty when no action is required.",
"properties": {
"requiredActions": {
"description": "Actions the participant must complete before payouts can be sent.",
"type": "array",
"readOnly": true,
"items": {
"type": "string",
"enum": [
"PAYOUT_DESTINATION",
"TAX_INFO"
]
}
}
}
}
},
"$defs": {
"CommissionStructure": {
"type": "object",
"description": "The commission configuration for an affiliate reward. Present only for affiliate programs.",
"properties": {
"amount": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 999999999999,
"description": "Fixed commission amount in the currency's smallest denomination, used when `type` is `FIXED`. The maximum is `100000000` (1,000,000.00) for USD, EUR, and GBP. `null` for percentage-based commissions."
},
"amountISO": {
"type": [
"string",
"null"
],
"description": "ISO 4217 currency code for the fixed `amount`. Defaults to the program's currency when omitted. Must match the campaign `currencyISO` when provided. `null` for percentage-based commissions."
},
"event": {
"type": [
"string",
"null"
],
"enum": [
"CLICK",
"LEAD",
"SALE",
null
],
"description": "The event that generates a commission. Missing legacy values read as `SALE`."
},
"type": {
"type": [
"string",
"null"
],
"enum": [
"PERCENT",
"FIXED",
null
],
"description": "How the commission is calculated: `PERCENT` (a percentage of the sale) or `FIXED` (a fixed `amount`)."
},
"minPaidReferrals": {
"type": [
"integer",
"null"
],
"description": "The minimum number of paid referrals required before commissions are earned."
},
"holdDuration": {
"type": [
"integer",
"null"
],
"description": "Number of days a commission is held before it can be paid out."
},
"duration": {
"type": [
"string",
"null"
],
"description": "How long commissions continue to be earned for a referred customer: `FOREVER`, `REPEATING`, or `ONCE`. Only applies when `event` is `SALE`. `null` for `CLICK` and `LEAD` commissions, which pay once per event."
},
"durationInMonths": {
"type": [
"integer",
"null"
],
"description": "When `duration` is `REPEATING`, the number of months over which commissions are earned. `null` otherwise."
},
"approvalRequired": {
"type": [
"boolean",
"null"
],
"description": "`true` if commissions require manual approval before they can be paid out."
},
"percent": {
"type": [
"number",
"null"
],
"description": "The commission percentage, used when `type` is `PERCENT`."
},
"hasMaxAmount": {
"type": [
"boolean",
"null"
],
"description": "`true` if a maximum commission amount cap is configured."
},
"maxAmount": {
"type": [
"integer",
"null"
],
"description": "The maximum commission amount cap in the currency's smallest denomination. `null` if no cap is set."
},
"maxAmountISO": {
"type": [
"string",
"null"
],
"description": "The [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code for `maxAmount`. Must match the campaign `currencyISO` when provided."
},
"hasIntro": {
"type": [
"boolean",
"null"
],
"description": "`true` if an introductory commission rate is configured. Only applies when `event` is `SALE`. Always `false` for `CLICK` and `LEAD` commissions, whose `intro*` fields are `null`."
},
"introType": {
"type": [
"string",
"null"
],
"description": "How the introductory commission is calculated: `PERCENT` or `FIXED`."
},
"introPercent": {
"type": [
"number",
"null"
],
"description": "The introductory commission percentage, used when `introType` is `PERCENT`."
},
"introAmount": {
"type": [
"integer",
"null"
],
"description": "The introductory commission amount in the currency's smallest denomination, used when `introType` is `FIXED`."
},
"introAmountISO": {
"type": [
"string",
"null"
],
"description": "The [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code for `introAmount`. Must match the campaign `currencyISO` when provided."
},
"introDuration": {
"type": [
"string",
"null"
],
"description": "How long the introductory rate applies."
},
"introDurationInMonths": {
"type": [
"integer",
"null"
],
"description": "When `introDuration` is repeating, the number of months the introductory rate applies."
}
},
"additionalProperties": false
},
"FraudRiskLevel": {
"type": "string",
"enum": [
"LOW",
"MEDIUM",
"HIGH"
]
},
"Metadata": {
"type": "object",
"description": "Shallow custom metadata object.",
"additionalProperties": true
},
"Participant": {
"type": "object",
"description": "Detailed information about a program participant.",
"required": [
"id",
"referralCount",
"monthlyReferralCount",
"rank",
"monthlyRank",
"rewards",
"email"
],
"properties": {
"id": {
"type": "string",
"readOnly": true,
"description": "The unique identifier of the participant."
},
"isAffiliate": {
"type": "boolean",
"readOnly": true,
"description": "Affiliate programs only. Whether this participant is an enrolled affiliate. A referred customer who has not joined the program is `false`."
},
"affiliateStatus": {
"type": [
"string",
"null"
],
"readOnly": true,
"description": "Affiliate programs only. The enrolled affiliate's status (`APPROVED`, `SUSPENDED`, or `BANNED`). `null` for participants who are not affiliates."
},
"affiliateEnrollmentSource": {
"type": [
"string",
"null"
],
"readOnly": true,
"description": "Affiliate programs only. How the affiliate enrolled (`OPEN_ENROLLMENT`, `APPLICATION`, `PARTICIPANT_AUTH`, `INVITE`, `REST_API`, `CSV`, or `DASHBOARD`). `null` when not recorded."
},
"firstName": {
"type": [
"string",
"null"
],
"description": "The first name of the participant."
},
"lastName": {
"type": [
"string",
"null"
],
"description": "The last name of the participant."
},
"email": {
"type": "string",
"description": "The email of the participant."
},
"paypalEmailAddress": {
"type": "string",
"format": "email",
"readOnly": true,
"description": "The PayPal email address on file for the participant, used for affiliate or PayPal reward payouts."
},
"referralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made by the participant."
},
"monthlyReferralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made this month by the participant (resets at the end of the month)."
},
"prevMonthlyReferralCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of referrals made the previous month by the participant."
},
"leadCount": {
"type": "integer",
"readOnly": true,
"description": "The number of pending referrals the participant made that have not converted into successful referrals yet. Not cumulative: it goes down when a lead converts."
},
"rank": {
"type": "integer",
"readOnly": true,
"description": "The rank of the participant."
},
"monthlyRank": {
"type": "integer",
"readOnly": true,
"description": "The monthly rank of the participant. This rank resets to 0 at the end of each month."
},
"prevMonthlyRank": {
"type": "integer",
"readOnly": true,
"description": "The previous monthly rank of the participant. Not returned if the participant did not exist in your program during the previous month."
},
"shareUrl": {
"type": "string",
"readOnly": true,
"description": "The unique share URL of the participant. Omitted for affiliate program\nparticipants who are not approved affiliates."
},
"createdAt": {
"type": "integer",
"format": "int64",
"readOnly": true,
"description": "The date the participant was added to the program (UTC milliseconds)."
},
"referralSource": {
"$ref": "#/$defs/ReferralSource",
"readOnly": true,
"description": "The source of how the participant joined the program."
},
"referralStatus": {
"$ref": "#/$defs/ReferralStatus",
"description": "If the participant was referred, the referrer's status in receiving the referral credit. Only applicable if the participant was referred into the program."
},
"referredBy": {
"type": "string",
"description": "The ID of the referrer. Only applicable if the participant was referred into the program."
},
"referralLeadQualifiedAt": {
"type": [
"integer",
"null"
],
"format": "int64",
"readOnly": true,
"description": "When this referred signup counted as a lead for the referrer, in Unix milliseconds. Set only when the program's `referralTrigger` is `CUSTOM`. Lead-event Campaign Rewards and commissions use it."
},
"fraudRiskLevel": {
"$ref": "#/$defs/FraudRiskLevel",
"readOnly": true,
"description": "A value that represents the integrity of the participant."
},
"fraudReasonCode": {
"type": "string",
"readOnly": true,
"description": "Machine-readable label for the participant's `fraudRiskLevel`. The label identifies broad\noutcomes such as unique or duplicate participant data, suspicious referral activity,\nconfigured access rules, or a manual update.\n\nCurrent labels include `UNIQUE_IDENTITY`, `DUPLICATE_EMAIL`, `DUPLICATE_IDENTITY`,\n`DUPLICATE_IDENTITY_EXCESSIVE`, `EMAIL_FRAUD`, `SIMILAR_EMAIL`, `SIMILAR_FIRST_NAME`,\n`SIMILAR_LAST_NAME`, `REFERRAL_EMAIL_PATTERN`, `REFERRAL_CHAIN_FRAUD`,\n`REFERRAL_VELOCITY_FRAUD`, `DOMAIN_CLUSTERING_FRAUD`, `MANUAL_UPDATE`, `WHITELISTED`,\n`BLACKLIST_MATCH`, `BLOCKED_IP`, and `REFERRER_HIGH_RISK`. Treat this as a diagnostic\nlabel because GrowSurf can add labels without notice."
},
"isWinner": {
"type": "boolean",
"readOnly": true,
"description": "`true` if the participant has earned one or more rewards."
},
"shareCount": {
"type": "object",
"readOnly": true,
"additionalProperties": {
"type": "integer"
},
"description": "An object containing counts of how many times the participant has shared their referral link, keyed by channel. Standard web channels include `email`, `facebook`, and `twitter`; SDK/native-share channels include `iosNativeShare` and `androidNativeShare`."
},
"impressionCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of impressions the participant has made."
},
"uniqueImpressionCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of unique impressions the participant has made."
},
"inviteCount": {
"type": "integer",
"readOnly": true,
"description": "The total number of invites the participant has sent."
},
"referrals": {
"type": "array",
"readOnly": true,
"items": {
"type": "string"
},
"description": "A list of `Participant` IDs who were successfully referred by the participant. Limited to the 100 most recently referred friends."
},
"monthlyReferrals": {
"type": "array",
"readOnly": true,
"items": {
"type": "string"
},
"description": "A list of `Participant` IDs successfully referred by the participant this month (resets at the end of the month). Limited to the 100 most recent."
},
"referrer": {
"readOnly": true,
"oneOf": [
{
"$ref": "#/$defs/ParticipantReferrer"
},
{
"type": "null"
}
],
"description": "An object containing the participant's referrer information. Only applicable if the participant was referred into the program."
},
"ipAddress": {
"type": [
"string",
"null"
],
"description": "The IP address recorded for the participant, or `null` when unavailable."
},
"fingerprint": {
"type": [
"string",
"null"
],
"description": "The browser identifier recorded for the participant, or `null` when unavailable."
},
"mobileInstanceId": {
"type": [
"string",
"null"
],
"description": "App-install scoped identifier supplied by a native app, or `null` when unavailable. The official mobile SDKs generate a lowercase UUID. Not stored when strict GDPR/CCPA mode is enabled."
},
"metadata": {
"$ref": "#/$defs/Metadata",
"description": "An object containing any custom key-value data, useful for saving additional data for the participant (e.g., `company`, `companySize`). Metadata is never used by GrowSurf and usage is optional. Metadata is returned only in REST API calls, and never in JavaScript Web API calls. See [API Guidelines](https://docs.growsurf.com/developer-tools/rest-api/api-guidelines)."
},
"notes": {
"type": [
"string",
"null"
],
"description": "Internal notes about the participant, added via the [GrowSurf Dashboard](https://growsurf.com/dashboard)."
},
"unsubscribed": {
"type": "boolean",
"description": "`true` if the participant has unsubscribed from program emails."
},
"language": {
"type": "string",
"enum": [
"en",
"es",
"fr",
"de",
"it",
"pt-BR",
"nl",
"pl",
"sv",
"tr",
"ja",
"ko",
"zh-CN",
"id",
"da",
"nb",
"nn",
"fi",
"is",
"cs",
"sk",
"hu",
"ro",
"hr",
"sl",
"et",
"lv",
"lt",
"el",
"bg",
"uk",
"ru",
"pt-PT",
"ca",
"vi",
"ms",
"fil",
"af",
"sw",
"zh-TW",
"es-419"
],
"description": "The language of the participant's portal and program emails. The program's base language unless the participant (or you) picked another of the program's languages."
},
"rewards": {
"type": "array",
"readOnly": true,
"items": {
"$ref": "#/$defs/ParticipantReward"
},
"description": "A list of the rewards the participant has earned."
},
"vanityKeys": {
"type": "array",
"items": {
"type": "string"
},
"description": "The list of vanity keys that the participant has."
},
"unreadCommissionsCount": {
"type": "integer",
"readOnly": true,
"description": "Affiliate programs only. The number of commissions the participant has not yet viewed."
},
"unreadPayoutsCount": {
"type": "integer",
"readOnly": true,
"description": "Affiliate programs only. The number of payouts the participant has not yet viewed."
},
"isNew": {
"type": "boolean",
"readOnly": true,
"description": "Whether this participant was newly created by the request. Returned by participant creation calls; `false` when the participant already existed."
},
"allMatchingFraudsters": {
"type": "array",
"readOnly": true,
"items": {
"type": "object",
"additionalProperties": true
},
"description": "A list of other participant IDs associated with this participant's fraud status."
},
"payoutSettings": {
"type": "object",
"readOnly": true,
"description": "Payout-related actions the participant must complete before a payout can be released (e.g. configuring a payout destination or submitting a W-9/W-8 tax form). Always present; the requiredActions array is empty when no action is required.",
"properties": {
"requiredActions": {
"description": "Actions the participant must complete before payouts can be sent.",
"type": "array",
"readOnly": true,
"items": {
"type": "string",
"enum": [
"PAYOUT_DESTINATION",
"TAX_INFO"
]
}
}
}
}
}
},
"ParticipantReferrer": {
"description": "The participant's referrer, returned within the `referrer` field of a `Participant`. It has the\nsame fields as a `Participant`. Its own `referrer` is always `null`.",
"allOf": [
{
"$ref": "#/$defs/Participant"
}
]
},
"ParticipantReward": {
"type": "object",
"description": "A reward that a participant has earned. This is different from a program `Reward` Object and contains information pertinent only to the participant that earned the reward.",
"required": [
"id",
"rewardId",
"status"
],
"properties": {
"id": {
"type": "string",
"readOnly": true,
"description": "The unique identifier of the participant's reward. This is different for every new reward the participant earns."
},
"rewardId": {
"type": "string",
"readOnly": true,
"description": "The ID of the program `Reward` (`CampaignReward`) that this participant has earned."
},
"status": {
"$ref": "#/$defs/RewardStatus",
"readOnly": true,
"description": "The status of the participant's reward."
},
"unread": {
"type": "boolean",
"readOnly": true,
"description": "`true` if the participant has not yet seen the reward in a GrowSurf window."
},
"approved": {
"type": "boolean",
"readOnly": true,
"description": "`true` if the participant's reward has been approved."
},
"app
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://artifacts.apis.io/growsurf-com/json-schema/growsurf-com-participant-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/growsurf-com-participant"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.