Health check endpoints
Varmply Backend API (0.1.0)
Varmply API – MVP backend for campaigns, wallets, authentication, and influencer participation.
Common error codes: - NOT_FOUND - Resource not found (404) - VALIDATION_ERROR - Input validation failed (400) - PERMISSION_DENIED - User lacks permission (403) - CONFLICT - Resource conflict (409) - UNAUTHORIZED - Authentication required (401) - INTERNAL_SERVER_ERROR - Unexpected server error (500)
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/participations/{participationId}
- Local development serverhttp://localhost:3000/participations/{participationId}
- Staging environmenthttps://api-staging.varmply.com/participations/{participationId}
- Production environmenthttps://api.varmply.com/participations/{participationId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789 \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Participation details retrieved successfully
Unique identifier for the participation
Unique identifier for the campaign
Unique identifier for the influencer user
Current status of the participation
List of content submissions for this participation
Platform where the content was posted
URL to the content
When the content was submitted
When the content was posted (null if not yet posted)
Array of hashtags declared in the content submission
Array of mentions declared in the content submission
Content type declared by the influencer during submission
Status of the submission. Submissions start as PENDING and transition to ACCEPTED or REJECTED based on campaign requirements validation.
Reason for rejection if submissionStatus is REJECTED. Possible values: CAMPAIGN_NOT_ACTIVE, SUBMISSION_LIMIT_REACHED, CONTENT_TYPE_NOT_ALLOWED, MISSING_REQUIRED_HASHTAGS, MISSING_REQUIRED_MENTIONS, INTEGRATION_NOT_ELIGIBLE
When the participation was created
Description of the campaign
Objective type for the campaign
Currency code for the campaign
Target budget in cents (null if no target set)
Current lifecycle status of the campaign
Campaign start date (null if not set)
Campaign end date (null if not set)
When the campaign was completed (null if not yet completed)
Array of required hashtags for submissions
Array of required mentions for submissions
Array of allowed content platform types
When the campaign was created
Maximum number of submissions that can be tracked for metrics
Total number of accepted submissions
Unique identifier for the submission
Whether this submission is being tracked for metrics
Reason for the tracking status
{ "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" }, "campaign": { "campaignId": "campaign_abc123", "campaignTitle": "Summer Campaign", "campaignDescription": "Summer product launch", "campaignLifeCycleStatus": "CAMPAIGN_ACTIVE" }, "submission_tracking_summary": { "submission_limit": 3, "accepted_submission_count": 5, "tracked_submission_count": 3 }, "submission_tracking_list": [ { … }, { … } ] }
Platform where the content was posted
When the content was posted (optional)
Array of hashtags declared in the content submission
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/participations/{participationId}/submissions
- Local development serverhttp://localhost:3000/participations/{participationId}/submissions
- Staging environmenthttps://api-staging.varmply.com/participations/{participationId}/submissions
- Production environmenthttps://api.varmply.com/participations/{participationId}/submissions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/submissions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"content_url": "https://instagram.com/p/abc123",
"platform": "INSTAGRAM",
"posted_at_timestamp": "2024-01-01T12:00:00Z",
"declared_hashtags": [
"#summer",
"#productlaunch"
],
"declared_mentions": [
"@brand"
]
}'{ "submission": { "submission_id": "submission_xyz789", "participation_id": "participation_xyz789", "content_url": "https://instagram.com/p/abc123", "platform": "INSTAGRAM", "submission_status": "PENDING", "rejection_reason": null, "submitted_at_timestamp": "2024-01-01T12:00:00Z" }, "participation": { "participation_id": "participation_xyz789", "participation_status": "PARTICIPATION_STATUS_PENDING" } }
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/submissions/{submissionId}/review
- Local development serverhttp://localhost:3000/submissions/{submissionId}/review
- Staging environmenthttps://api-staging.varmply.com/submissions/{submissionId}/review
- Production environmenthttps://api.varmply.com/submissions/{submissionId}/review
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs-staging.varmply.com/_mock/openapi/submissions/submission_xyz789/review \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"action": "APPROVE"
}'{ "submission_id": "submission_xyz789", "participation_id": "participation_xyz789", "submission_status": "ACCEPTED", "rejection_reason": null, "participation_status": "PARTICIPATION_STATUS_APPROVED" }
Request
Legacy endpoint for approving submitted content for a participation. Only the campaign owner can approve content. Requires a valid JWT access token. Note: This endpoint is maintained for backward compatibility. New implementations should use POST /submissions/{submissionId}/review instead.
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/participations/{participationId}/approve
- Local development serverhttp://localhost:3000/participations/{participationId}/approve
- Staging environmenthttps://api-staging.varmply.com/participations/{participationId}/approve
- Production environmenthttps://api.varmply.com/participations/{participationId}/approve
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/approve \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Content approved successfully
Unique identifier for the participation
Unique identifier for the campaign
Unique identifier for the influencer user
Current status of the participation
List of content submissions for this participation
Platform where the content was posted
URL to the content
When the content was submitted
When the content was posted (null if not yet posted)
Array of hashtags declared in the content submission
Array of mentions declared in the content submission
Content type declared by the influencer during submission
Status of the submission. Submissions start as PENDING and transition to ACCEPTED or REJECTED based on campaign requirements validation.
Reason for rejection if submissionStatus is REJECTED. Possible values: CAMPAIGN_NOT_ACTIVE, SUBMISSION_LIMIT_REACHED, CONTENT_TYPE_NOT_ALLOWED, MISSING_REQUIRED_HASHTAGS, MISSING_REQUIRED_MENTIONS, INTEGRATION_NOT_ELIGIBLE
When the participation was created
{ "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" } }
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/participations/{participationId}/complete
- Local development serverhttp://localhost:3000/participations/{participationId}/complete
- Staging environmenthttps://api-staging.varmply.com/participations/{participationId}/complete
- Production environmenthttps://api.varmply.com/participations/{participationId}/complete
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/complete \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Participation marked as completed successfully
Unique identifier for the participation
Unique identifier for the campaign
Unique identifier for the influencer user
Current status of the participation
List of content submissions for this participation
Platform where the content was posted
URL to the content
When the content was submitted
When the content was posted (null if not yet posted)
Array of hashtags declared in the content submission
Array of mentions declared in the content submission
Content type declared by the influencer during submission
Status of the submission. Submissions start as PENDING and transition to ACCEPTED or REJECTED based on campaign requirements validation.
Reason for rejection if submissionStatus is REJECTED. Possible values: CAMPAIGN_NOT_ACTIVE, SUBMISSION_LIMIT_REACHED, CONTENT_TYPE_NOT_ALLOWED, MISSING_REQUIRED_HASHTAGS, MISSING_REQUIRED_MENTIONS, INTEGRATION_NOT_ELIGIBLE
When the participation was created
{ "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" } }
Request
Returns read-only participation analytics for the authenticated user. Only accessible by the participation creator. Aggregates metrics from ACCEPTED submissions only and explicitly marks which submissions are counted. Supports from, to, and bucket for date range and bucketing (defaults apply when omitted). All timestamps are in UTC (ISO 8601 format with Z suffix).
- Mock serverhttps://docs-staging.varmply.com/_mock/openapi/participations/{participationId}/analytics
- Local development serverhttp://localhost:3000/participations/{participationId}/analytics
- Staging environmenthttps://api-staging.varmply.com/participations/{participationId}/analytics
- Production environmenthttps://api.varmply.com/participations/{participationId}/analytics
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs-staging.varmply.com/_mock/openapi/participations/participation_xyz789/analytics?from=2024-01-01T00%3A00%3A00Z&to=2024-01-15T00%3A00%3A00Z&bucket=DAY' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Participation analytics retrieved successfully
Unique identifier for the participation
Creator integration capability for this participation context
Metrics status
Timestamp of the most recent snapshot fetchedAtTimestamp (UTC)
Timestamp of the most recent ingestion attempt (UTC)
Timestamp of the most recent successful ingestion (UTC)
Last failure reason mapped into a stable enum (null if none)
Timestamp of the most recent snapshot fetchedAtTimestamp (UTC)
Timestamp of the most recent ingestion attempt (UTC)
Timestamp of the most recent successful ingestion (UTC)
Last failure reason mapped into a stable enum (null if none)
{ "participation_id": "participation_xyz789", "campaign_id": "campaign_abc123", "integration_capability": "VALID", "submissions": [], "aggregate": { "by_platform": [], "overall": { … }, "blocked_reason_code": null }, "freshness": { "last_snapshot_at": null, "last_attempt_at": null, "last_success_at": null, "last_failure_reason": null, "freshness_status": "STALE" } }