Mavrck Candidates API
The Candidates API from Mavrck — 5 operation(s) for candidates.
The Candidates API from Mavrck — 5 operation(s) for candidates.
openapi: 3.2.0
info:
version: 1.0.0
description: Identify your most influential customers and activate them to drive more conversions on social.
title: MAVRCK.IO Candidates API
servers:
- url: http://app.splashscore.com/v1
- url: https://app.splashscore.com/v1
security:
- apiKey: []
tags:
- name: Candidates
paths:
/action-groups/{id}/candidates/{globalUserId}/assessment:
post:
x-handler: action_group_candidates/action_group_candidate_assessment_controller.js
x-access:
- administrator
- shared-cipher
tags:
- Candidates
summary: Create an assessment for an influencer.
operationId: createAssessment
parameters:
- name: id
in: path
description: ID of action group
required: true
schema:
type: integer
- name: globalUserId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Empty object
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Either the action group or global user was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
content:
application/json:
schema:
type: object
properties:
approves:
type: boolean
assessorEmail:
type: string
assessorName:
type: string
put:
x-handler: action_group_candidates/action_group_candidate_assessment_controller.js
x-access:
- administrator
- shared-cipher
tags:
- Candidates
summary: Update an assessment for an influencer.
operationId: updateAssessment
parameters:
- name: id
in: path
description: ID of action group
required: true
schema:
type: integer
- name: globalUserId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Empty object
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Either the action group or global user was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
content:
application/json:
schema:
type: object
properties:
approves:
type: boolean
assessorEmail:
type: string
assessorName:
type: string
delete:
x-handler: action_group_candidates/action_group_candidate_assessment_controller.js
x-access:
- administrator
- shared-cipher
tags:
- Candidates
summary: Delete an assessment for an influencer.
operationId: deleteAssessment
parameters:
- name: id
in: path
description: ID of action group
required: true
schema:
type: integer
- name: globalUserId
in: path
required: true
schema:
type: integer
- name: assessorEmail
in: query
description: Email of the assessor whose assessment should be deleted. Scopes the deletion to the calling reviewer so concurrent reviewers' assessments are not affected.
required: false
schema:
type: string
- name: assessorName
in: query
description: Name of the assessor whose assessment should be deleted.
required: false
schema:
type: string
responses:
'200':
description: Empty object
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Either the action group or global user was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/action-groups/{id}/candidates:
get:
x-handler: action_group_candidates/action_group_candidate_controller.js
summary: Retrieve all action group candidates.
x-access:
- administrator
- shared-cipher
x-sharedCipherParameters:
actionGroupId: id
operationId: getAllActionGroupCandidates
parameters:
- name: id
in: path
description: ID of action group
required: true
schema:
type: integer
- $ref: '#/components/parameters/options'
- $ref: '#/components/parameters/limitParam'
- $ref: '#/components/parameters/offsetParam'
- $ref: '#/components/parameters/orderDirection'
- $ref: '#/components/parameters/userFilter'
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/listStatusId'
- $ref: '#/components/parameters/listCustomStatusId'
- $ref: '#/components/parameters/listCustomInfluencerStatusId'
- $ref: '#/components/parameters/contentDueDate'
- $ref: '#/components/parameters/hasCompletedActivity'
- $ref: '#/components/parameters/hasOptedInToActivity'
- $ref: '#/components/parameters/isParticipatingInActivity'
- name: includeInstagramPosts
in: query
schema:
type: boolean
- name: includeViewed
in: query
schema:
type: boolean
- name: includeCommentsCount
in: query
schema:
type: boolean
- name: includeDraftComments
in: query
schema:
type: boolean
- name: assessorEmail
in: query
schema:
type: string
- name: orderProperty
in: query
schema:
type: string
enum:
- statusId
- upvotes
- downvotes
- netVotes
- totalVotes
- dueDate
- optedInDate
- engagements
- createdAt
- customStatusId
- customInfluencerStatusId
- quote
- user.stageJoinDate
- user.id
- user.age
- user.audienceFakeEngagersLevel
- user.audienceFakeFollowersLevel
- user.audienceFraudLevel
- user.audiencePercentageFemale
- user.audiencePercentage_13_17
- user.audiencePercentage_18_24
- user.audiencePercentage_25_34
- user.audiencePercentage_35_44
- user.audiencePercentage_45_54
- user.audiencePercentage_55_64
- user.audiencePercentage_65_plus
- user.audiencePredominantAgeRange
- user.audiencePredominantCity
- user.audiencePredominantCountry
- user.birthday
- user.city
- user.country
- user.deleted
- user.email
- user.fullName
- user.gender
- user.instagramHandle
- user.lastRefreshedAt
- user.loadSource
- user.nudityLevel
- user.profanityLevel
- user.state
- user.violenceLevel
- listMemberCostAndPerformance.listMemberId
- listMemberCostAndPerformance.rewards
- listMemberCostAndPerformance.value
- listMemberCostAndPerformance.cost
- listMemberCostAndPerformance.posts
- listMemberCostAndPerformance.engagements
- listMemberCostAndPerformance.impressions
- listMemberCostAndPerformance.clicks
- listMemberCostAndPerformance.conversions
- listMemberCostAndPerformance.conversionValue
- listMemberCostAndPerformance.cpm
- listMemberCostAndPerformance.cpp
- listMemberCostAndPerformance.cpe
- listMemberCostAndPerformance.committedAmount
- listMemberCostAndPerformance.readyAmount
- listMemberCostAndPerformance.paidAmount
- listMemberCostAndPerformance.emvValue
- listMemberCostAndPerformance.roiValue
- user.instagramAccount.globalUserId
- user.instagramAccount.analysisVersion
- user.instagramAccount.audienceFakeCommentersLevel
- user.instagramAccount.audienceFakeCommentersPercentage
- user.instagramAccount.audienceFakeEngagersLevel
- user.instagramAccount.audienceFakeFollowersLevel
- user.instagramAccount.audienceFakeFollowersPercentage
- user.instagramAccount.audienceFakeLikersLevel
- user.instagramAccount.audienceFakeLikersPercentage
- user.instagramAccount.audienceFraudLevel
- user.instagramAccount.audiencePercentageFemale
- user.instagramAccount.audiencePercentage_13_17
- user.instagramAccount.audiencePercentage_18_24
- user.instagramAccount.audiencePercentage_25_34
- user.instagramAccount.audiencePercentage_35_44
- user.instagramAccount.audiencePercentage_45_54
- user.instagramAccount.audiencePercentage_55_64
- user.instagramAccount.audiencePercentage_65_plus
- user.instagramAccount.audiencePredominantAgeRange
- user.instagramAccount.audiencePredominantCity
- user.instagramAccount.audiencePredominantCountry
- user.instagramAccount.averageComments
- user.instagramAccount.averageEngagements
- user.instagramAccount.averageLikes
- user.instagramAccount.bio
- user.instagramAccount.boughtFollowers
- user.instagramAccount.createdAt
- user.instagramAccount.engagementRate
- user.instagramAccount.followersCount
- user.instagramAccount.followingCount
- user.instagramAccount.fullName
- user.instagramAccount.handle
- user.instagramAccount.instagramExternalId
- user.instagramAccount.instagramProfileId
- user.instagramAccount.isBusiness
- user.instagramAccount.isPrivate
- user.instagramAccount.lastAnalyzedAt
- user.instagramAccount.lastAnalyzedFollowersFraudAt
- user.instagramAccount.loadSource
- user.instagramAccount.mediaCount
- user.instagramAccount.nudityLevel
- user.instagramAccount.previewPostsLastUpdatedAt
- user.instagramAccount.profanityLevel
- user.instagramAccount.profilePicture
- user.instagramAccount.profileType
- user.instagramAccount.sourceDetail
- user.instagramAccount.sponsoredPostRate
- user.instagramAccount.topicsLastAnalyzedAt
- user.instagramAccount.updatedAt
- user.instagramAccount.violenceLevel
- user.instagramAccount.website
- user.facebookProfile.id
- user.facebookProfile.averageComments
- user.facebookProfile.averageEngagements
- user.facebookProfile.averageLikes
- user.facebookProfile.engagementRate
- user.facebookProfile.facebookExternalId
- user.facebookProfile.facebookCreator
- user.facebookProfile.link
- user.facebookProfile.name
- user.facebookProfile.picture
- user.facebookProfile.reach
- user.facebookProfile.type
- user.twitterAccount.id
- user.twitterAccount.userId
- user.twitterAccount.handle
- user.twitterAccount.fullName
- user.twitterAccount.profilePicture
- user.twitterAccount.description
- user.twitterAccount.followersCount
- user.twitterAccount.followingCount
- user.twitterAccount.listedCount
- user.twitterAccount.accountCreatedAt
- user.twitterAccount.location
- user.twitterAccount.geoEnabled
- user.twitterAccount.lang
- user.twitterAccount.timeZone
- user.twitterAccount.utcOffset
- user.twitterAccount.verified
- user.twitterAccount.protected
- user.twitterAccount.averageFavorites
- user.twitterAccount.averageRetweets
- user.twitterAccount.averageEngagements
- user.twitterAccount.engagementRate
- user.twitterAccount.primaryAccount
- user.twitterAccount.twitterExternalId
- user.twitterAccount.createdAt
- user.pinterestAccount.id
- user.pinterestAccount.averageEngagements
- user.pinterestAccount.bio
- user.pinterestAccount.boardsCount
- user.pinterestAccount.createdAt
- user.pinterestAccount.engagementRate
- user.pinterestAccount.externalId
- user.pinterestAccount.firstName
- user.pinterestAccount.followersCount
- user.pinterestAccount.followingCount
- user.pinterestAccount.lastName
- user.pinterestAccount.monthlyViewers
- user.pinterestAccount.pinsCount
- user.pinterestAccount.primaryAccount
- user.pinterestAccount.profilePicture
- user.pinterestAccount.updatedAt
- user.pinterestAccount.userId
- user.pinterestAccount.username
- user.blog.id
- user.blog.globalUserId
- user.blog.language
- user.blog.name
- user.blog.platform
- user.blog.url
- user.youtubeChannel.id
- user.youtubeChannel.userId
- user.youtubeChannel.username
- user.youtubeChannel.bio
- user.youtubeChannel.accountCreatedAt
- user.youtubeChannel.profilePicture
- user.youtubeChannel.followersCount
- user.youtubeChannel.videoCount
- user.youtubeChannel.commentCount
- user.youtubeChannel.viewCount
- user.youtubeChannel.primaryAccount
- user.youtubeChannel.youtubeExternalId
- user.youtubeChannel.handle
- user.youtubeChannel.global_user_id
- draftContent.id
- draftContent.text
- draftContent.listMemberId
- draftContent.createdAt
- draftContent.updatedAt
- draftContent.status
- draftContent.contentType
- draftContent.notes
- draftContent.contentUrl
- draftContent.isArchived
- draftContent.archivedByAccountId
- draftContent.archivedByGlobalUserId
- draftContent.archivedAt
- draftContent.threadId
- draftContent.feedback
- draftContent.uploaderType
- draftContent.uploaderAccountId
- draftContent.uploaderGlobalUserId
- user.tiktokCreator.followersCount
- user.tiktokCreator.engagementRate
responses:
'200':
description: An array of candidates for an action group
content:
application/json:
schema:
properties:
meta:
$ref: '#/components/schemas/ResponseMetadata'
data:
items:
$ref: '#/components/schemas/ActionGroupCandidate'
type: array
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Action group not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Candidates
put:
x-handler: action_group_candidates/action_group_candidate_status_change_controller.js
x-access:
- administrator
tags:
- Candidates
summary: Update the status of candidates.
operationId: updateInfluencersStatuses
parameters:
- name: id
in: path
description: ID of action group
required: true
schema:
type: integer
responses:
'200':
description: Empty object
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Action group not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Resource conflict.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
content:
application/json:
schema:
type: object
required:
- statusId
properties:
statusId:
type: integer
globalUserIds:
type: array
items:
type: integer
queryFilter:
$ref: '#/components/schemas/ActionGroupCandidateQueryFilter'
required: true
/action-groups/{actionGroupId}/candidates/{globalUserId}:
get:
x-handler: action_group_candidates/action_group_candidate_controller.js
summary: Retrieve a candidate of an action group.
x-access:
- administrator
operationId: getActionGroupCandidate
parameters:
- name: actionGroupId
in: path
description: ID of action group
required: true
schema:
type: integer
- name: globalUserId
in: path
description: ID of the global user
required: true
schema:
type: integer
responses:
'200':
description: A candidate of an action group
content:
application/json:
schema:
$ref: '#/components/schemas/ActionGroupCandidate'
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Action group not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Candidates
/action-groups/{actionGroupId}/bulk-opt-in:
post:
summary: Opt-in candidates in bulk.
x-handler: action_group_candidates/bulk_opt_in_controller.js
x-access:
- administrator
tags:
- Candidates
operationId: bulkOptIn
parameters:
- name: actionGroupId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Bulk opt in successful.
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Action group not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Resource conflict.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
content:
application/json:
schema:
type: object
properties:
queryFilter:
$ref: '#/components/schemas/ActionGroupCandidateQueryFilter'
globalUserIds:
type: array
items:
type: integer
required: true
/action-groups/{actionGroupId}/confirm-participation:
post:
tags:
- Candidates
x-handler: action_group_candidates/confirm_participation_controller.js
x-access:
- influencer
summary: Confirm participation/non-participation in an action group.
operationId: confirmActionGroupParticipation
parameters:
- name: actionGroupId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Participation status updated.
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyObject'
'400':
description: Invalid or missing parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Session expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Access forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Action group not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Server error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
requestBody:
content:
application/json:
schema:
type: object
required:
- participating
properties:
participating:
type: boolean
required: true
components:
schemas:
ResponseMetadata:
properties:
limit:
type: number
format: double
offset:
type: number
format: double
status:
type: string
enum:
- failure
- success
totalCount:
type: number
format: double
type: object
additionalProperties: false
Error:
type: object
properties:
type:
type: string
description: A key representing the type of error that has occurred.
error:
type: string
description: A static description of the type of error.
params:
type: array
description: For errors invovling parameters, this is an array containing the invalid parameters.
items:
type: string
keys:
type: array
items:
type:
- string
- object
artifactLinks:
$ref: '#/components/schemas/LinksDeprecated'
parent:
type: object
properties:
type:
type: string
description: A key representing the type of error generated by a request to an external API.
error:
type: string
description: A static description of the parent error.
BonusTier:
description: 'Swagger 2 representation of a tiered bonus entry.
`upperBound` is required for `BOUNDED` tiers and must be omitted for
`OPEN_ENDED` tiers. The bonus-tier validator enforces that conditional rule.
Validation rules:
- `bonusTiers` may contain at most 5 tiers.
- Tiers must be sorted by `lowerBound`.
- Adjacent tiers must be contiguous.
- The final tier must be `OPEN_ENDED`.
- `bonusTierCurrencyCode` is required when `bonusTiers` is non-empty.'
properties:
type:
type: string
enum:
- BOUNDED
- OPEN_ENDED
lowerBound:
type: number
format: double
description: Inclusive lower conversion/order bound for this payout tier. Must be non-negative.
upperBound:
type: number
format: double
description: Exclusive upper conversion/order bound for a `BOUNDED` tier.
bonusAmount:
type: number
format: double
description: Bonus payout amount in `bonusTierCurrencyCode`. Must be positive.
required:
- type
- lowerBound
- bonusAmount
type: object
additionalProperties: false
WorkflowStatusRequirementDeprecated:
type: object
properties:
satisfied:
type: boolean
incentiveId:
type: number
name:
type: string
UserSearch:
type: object
additionalProperties: false
properties:
DemographicsPro_Audience_Data_Analysis:
type: object
additionalProperties: false
properties:
DemographicsPro_Audience_Gender_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_MaritalStatus_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_ParentalStatus_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_Age_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_Race_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_Language_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_Country_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_State_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_City_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_EducationStatus_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_PersonalIncome_Max:
type: array
x-filter-type: term
items:
type: string
DemographicsPro_Audience_Occupation_Max:
type: object
additionalProperties: false
x-filter-type: multiTerm
properties:
quantifier:
type: string
enum:
- any
- all
ids:
type: array
items:
type:
- integer
- string
DemographicsPro_Audience_Industry_Max:
type: object
additionalProperties: false
# --- truncated at 32 KB (194 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavrck/refs/heads/main/openapi/mavrck-candidates-api-openapi.yml