curl --request POST \
--url https://api.promostack.app/referrer \
--header 'Content-Type: application/json' \
--data '
{
"uid": "<string>",
"metadata": {}
}
'{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field: uid"
}
}
Get or create a referrer and fetch their progress
curl --request POST \
--url https://api.promostack.app/referrer \
--header 'Content-Type: application/json' \
--data '
{
"uid": "<string>",
"metadata": {}
}
'{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field: uid"
}
}
uid. If not, creates a new one.curl -X POST https://api.promostack.app/referrer \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"uid": "user_123",
"metadata": {
"name": "John Doe"
}
}'
active, paused, or ended{
"referrer_id": "550e8400-e29b-41d4-a716-446655440000",
"referral_link": "https://promostack.app/r/abc123",
"referrer_slug": "abc123",
"metacode": "abc123",
"status": "active",
"stats": {
"referrals_count": 3,
"rewards_earned": 0
},
"progress": {
"ios": {
"current": 3,
"threshold": 5,
"next_reward_at": 5,
"percentage": 60
},
"android": {
"current": 0,
"threshold": 5,
"next_reward_at": 5,
"percentage": 0
}
}
}
struct ReferrerResponse: Codable {
let referrer_id: String
let referral_link: String
let metacode: String
let stats: Stats
let progress: Progress
}
func getReferrer(userId: String) async throws -> ReferrerResponse {
let url = URL(string: "https://api.promostack.app/referrer")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue(apiKey, forHTTPHeaderField: "x-api-key")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body = ["uid": userId]
request.httpBody = try JSONEncoder().encode(body)
let (data, _) = try await URLSession.shared.data(for: request)
return try JSONDecoder().decode(ReferrerResponse.self, from: data)
}
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required field: uid"
}
}