Skip to content

Varmply Backend API (0.1.0)

Varmply API – MVP backend for campaigns, wallets, authentication, and influencer participation.

Download OpenAPI description
Languages
Servers
Mock server
https://docs-staging.varmply.com/_mock/openapi/
Local development server
http://localhost:3000/
Staging environment
https://api-staging.varmply.com/
Production environment
https://api.varmply.com/

Health

Health check endpoints

Operations

Authentication

User registration and authentication

Operations

Wallet

Wallet balance and operations

Operations

Dev

Development-only endpoints for testing (not available in production)

Operations

Campaigns

Campaign creation, management, and funding

Operations

Participation

Campaign participation and content submission

Operations

Join a campaign as an influencer

Request

Join a campaign as an influencer. Creates an auto-accepted participation. Requires a valid JWT access token.

Security
bearerAuth
Path
campaignIdstringrequired

Unique identifier for the campaign

Example: campaign_abc123
Bodyapplication/json
object
curl -i -X POST \
  https://docs-staging.varmply.com/_mock/openapi/campaigns/campaign_abc123/participations \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

Successfully joined the campaign

Bodyapplication/json
participationobject(Participation)required
participation.​participationIdstringrequired

Unique identifier for the participation

Example: "participation_xyz789"
participation.​campaignIdstringrequired

Unique identifier for the campaign

Example: "campaign_abc123"
participation.​influencerUserIdstringrequired

Unique identifier for the influencer user

Example: "user_123"
participation.​participationStatusstringrequired

Current status of the participation

Enum"PARTICIPATION_STATUS_PENDING""PARTICIPATION_STATUS_APPROVED""PARTICIPATION_STATUS_REJECTED""PARTICIPATION_STATUS_CONTENT_SUBMITTED""PARTICIPATION_STATUS_COMPLETED"
Example: "PARTICIPATION_STATUS_APPROVED"
participation.​contentSubmissionListArray of objects(ParticipationContentSubmission)required

List of content submissions for this participation

participation.​contentSubmissionList[].​platformTypestringrequired

Platform where the content was posted

Enum"INSTAGRAM""TIKTOK""FACEBOOK""YOUTUBE"
Example: "INSTAGRAM"
participation.​contentSubmissionList[].​contentUrlstring(uri)required

URL to the content

Example: "https://instagram.com/p/abc123"
participation.​contentSubmissionList[].​submittedAtTimestampstring(date-time)required

When the content was submitted

Example: "2024-01-01T12:00:00Z"
participation.​contentSubmissionList[].​postedAtTimestampstring or null(date-time)required

When the content was posted (null if not yet posted)

Example: "2024-01-01T12:00:00Z"
participation.​createdAtTimestampstring(date-time)required

When the participation was created

Example: "2024-01-01T00:00:00Z"
participation.​lastUpdatedAtTimestampstring(date-time)required

When the participation was last updated

Example: "2024-01-01T00:00:00Z"
Response
application/json
{ "participation": { "participationId": "participation_xyz789", "campaignId": "campaign_abc123", "influencerUserId": "user_123", "participationStatus": "PARTICIPATION_STATUS_APPROVED", "contentSubmissionList": [], "createdAtTimestamp": "2024-01-01T00:00:00Z", "lastUpdatedAtTimestamp": "2024-01-01T00:00:00Z" } }

Submit content for a participation

Request

Submit content (e.g., Instagram post, TikTok video) for a participation. Requires a valid JWT access token. Only the influencer who owns the participation can submit content.

Security
bearerAuth
Path
participationIdstringrequired

Unique identifier for the participation

Example: participation_xyz789
Bodyapplication/jsonrequired
platformTypestringrequired

Platform where the content was posted

Enum"INSTAGRAM""TIKTOK""FACEBOOK""YOUTUBE"
Example: "INSTAGRAM"
contentUrlstring(uri)required

URL to the content

Example: "https://instagram.com/p/abc123"
postedAtTimestampstring or null(date-time)

When the content was posted (optional)

Example: "2024-01-01T12:00:00Z"
curl -i -X POST \
  https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/content-submissions \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "platformType": "INSTAGRAM",
    "contentUrl": "https://instagram.com/p/abc123",
    "postedAtTimestamp": "2024-01-01T12:00:00Z"
  }'

Responses

Content submitted successfully

Bodyapplication/json
participationobject(Participation)required
participation.​participationIdstringrequired

Unique identifier for the participation

Example: "participation_xyz789"
participation.​campaignIdstringrequired

Unique identifier for the campaign

Example: "campaign_abc123"
participation.​influencerUserIdstringrequired

Unique identifier for the influencer user

Example: "user_123"
participation.​participationStatusstringrequired

Current status of the participation

Enum"PARTICIPATION_STATUS_PENDING""PARTICIPATION_STATUS_APPROVED""PARTICIPATION_STATUS_REJECTED""PARTICIPATION_STATUS_CONTENT_SUBMITTED""PARTICIPATION_STATUS_COMPLETED"
Example: "PARTICIPATION_STATUS_APPROVED"
participation.​contentSubmissionListArray of objects(ParticipationContentSubmission)required

List of content submissions for this participation

participation.​contentSubmissionList[].​platformTypestringrequired

Platform where the content was posted

Enum"INSTAGRAM""TIKTOK""FACEBOOK""YOUTUBE"
Example: "INSTAGRAM"
participation.​contentSubmissionList[].​contentUrlstring(uri)required

URL to the content

Example: "https://instagram.com/p/abc123"
participation.​contentSubmissionList[].​submittedAtTimestampstring(date-time)required

When the content was submitted

Example: "2024-01-01T12:00:00Z"
participation.​contentSubmissionList[].​postedAtTimestampstring or null(date-time)required

When the content was posted (null if not yet posted)

Example: "2024-01-01T12:00:00Z"
participation.​createdAtTimestampstring(date-time)required

When the participation was created

Example: "2024-01-01T00:00:00Z"
participation.​lastUpdatedAtTimestampstring(date-time)required

When the participation was last updated

Example: "2024-01-01T00:00:00Z"
Response
application/json
{ "participation": { "participationId": "participation_xyz789", "campaignId": "campaign_abc123", "influencerUserId": "user_123", "participationStatus": "PARTICIPATION_STATUS_CONTENT_SUBMITTED", "contentSubmissionList": [], "createdAtTimestamp": "2024-01-01T00:00:00Z", "lastUpdatedAtTimestamp": "2024-01-01T12:00:00Z" } }

Approve participation content

Request

Approve submitted content for a participation. Only the campaign owner can approve content. Requires a valid JWT access token.

Security
bearerAuth
Path
participationIdstringrequired

Unique identifier for the participation

Example: participation_xyz789
curl -i -X POST \
  https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/approve \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Content approved successfully

Bodyapplication/json
participationobject(Participation)required
participation.​participationIdstringrequired

Unique identifier for the participation

Example: "participation_xyz789"
participation.​campaignIdstringrequired

Unique identifier for the campaign

Example: "campaign_abc123"
participation.​influencerUserIdstringrequired

Unique identifier for the influencer user

Example: "user_123"
participation.​participationStatusstringrequired

Current status of the participation

Enum"PARTICIPATION_STATUS_PENDING""PARTICIPATION_STATUS_APPROVED""PARTICIPATION_STATUS_REJECTED""PARTICIPATION_STATUS_CONTENT_SUBMITTED""PARTICIPATION_STATUS_COMPLETED"
Example: "PARTICIPATION_STATUS_APPROVED"
participation.​contentSubmissionListArray of objects(ParticipationContentSubmission)required

List of content submissions for this participation

participation.​contentSubmissionList[].​platformTypestringrequired

Platform where the content was posted

Enum"INSTAGRAM""TIKTOK""FACEBOOK""YOUTUBE"
Example: "INSTAGRAM"
participation.​contentSubmissionList[].​contentUrlstring(uri)required

URL to the content

Example: "https://instagram.com/p/abc123"
participation.​contentSubmissionList[].​submittedAtTimestampstring(date-time)required

When the content was submitted

Example: "2024-01-01T12:00:00Z"
participation.​contentSubmissionList[].​postedAtTimestampstring or null(date-time)required

When the content was posted (null if not yet posted)

Example: "2024-01-01T12:00:00Z"
participation.​createdAtTimestampstring(date-time)required

When the participation was created

Example: "2024-01-01T00:00:00Z"
participation.​lastUpdatedAtTimestampstring(date-time)required

When the participation was last updated

Example: "2024-01-01T00:00:00Z"
Response
application/json
{ "participation": { "participationId": "participation_xyz789", "campaignId": "campaign_abc123", "influencerUserId": "user_123", "participationStatus": "PARTICIPATION_STATUS_APPROVED", "contentSubmissionList": [], "createdAtTimestamp": "2024-01-01T00:00:00Z", "lastUpdatedAtTimestamp": "2024-01-01T13:00:00Z" } }

Mark participation as completed

Request

Mark a participation as completed. Only the campaign owner can mark participations as completed. Requires a valid JWT access token.

Security
bearerAuth
Path
participationIdstringrequired

Unique identifier for the participation

Example: participation_xyz789
curl -i -X POST \
  https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/complete \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Participation marked as completed successfully

Bodyapplication/json
participationobject(Participation)required
participation.​participationIdstringrequired

Unique identifier for the participation

Example: "participation_xyz789"
participation.​campaignIdstringrequired

Unique identifier for the campaign

Example: "campaign_abc123"
participation.​influencerUserIdstringrequired

Unique identifier for the influencer user

Example: "user_123"
participation.​participationStatusstringrequired

Current status of the participation

Enum"PARTICIPATION_STATUS_PENDING""PARTICIPATION_STATUS_APPROVED""PARTICIPATION_STATUS_REJECTED""PARTICIPATION_STATUS_CONTENT_SUBMITTED""PARTICIPATION_STATUS_COMPLETED"
Example: "PARTICIPATION_STATUS_APPROVED"
participation.​contentSubmissionListArray of objects(ParticipationContentSubmission)required

List of content submissions for this participation

participation.​contentSubmissionList[].​platformTypestringrequired

Platform where the content was posted

Enum"INSTAGRAM""TIKTOK""FACEBOOK""YOUTUBE"
Example: "INSTAGRAM"
participation.​contentSubmissionList[].​contentUrlstring(uri)required

URL to the content

Example: "https://instagram.com/p/abc123"
participation.​contentSubmissionList[].​submittedAtTimestampstring(date-time)required

When the content was submitted

Example: "2024-01-01T12:00:00Z"
participation.​contentSubmissionList[].​postedAtTimestampstring or null(date-time)required

When the content was posted (null if not yet posted)

Example: "2024-01-01T12:00:00Z"
participation.​createdAtTimestampstring(date-time)required

When the participation was created

Example: "2024-01-01T00:00:00Z"
participation.​lastUpdatedAtTimestampstring(date-time)required

When the participation was last updated

Example: "2024-01-01T00:00:00Z"
Response
application/json
{ "participation": { "participationId": "participation_xyz789", "campaignId": "campaign_abc123", "influencerUserId": "user_123", "participationStatus": "PARTICIPATION_STATUS_COMPLETED", "contentSubmissionList": [], "createdAtTimestamp": "2024-01-01T00:00:00Z", "lastUpdatedAtTimestamp": "2024-01-01T14:00:00Z" } }

OAuth

Social media OAuth connection flows

Operations

Metrics

Content metrics and analytics endpoints

Operations