Create a promotion enrollment
curl --request POST \
--url https://api.zapier.com/v2/promotions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"promotion_id": "promo_12345"
}
'import requests
url = "https://api.zapier.com/v2/promotions"
payload = { "promotion_id": "promo_12345" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({promotion_id: 'promo_12345'})
};
fetch('https://api.zapier.com/v2/promotions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zapier.com/v2/promotions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'promotion_id' => 'promo_12345'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zapier.com/v2/promotions"
payload := strings.NewReader("{\n \"promotion_id\": \"promo_12345\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.zapier.com/v2/promotions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"promotion_id\": \"promo_12345\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/v2/promotions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"promotion_id\": \"promo_12345\"\n}"
response = http.request(request)
puts response.read_body{
"enrollment_id": "<string>"
}{
"errors": [
{
"status": "401",
"code": "not_authenticated",
"title": "User Not Authenticated",
"detail": "User must be authenticated to access this resource. No valid user access token was provided."
}
]
}{
"errors": [
{
"status": "403",
"code": "permission_denied",
"title": "Permission Denied",
"detail": "You do not have permission to perform this action."
}
]
}{
"errors": [
{
"status": "404",
"code": "promotion_not_found",
"title": "Promotion Not Found",
"detail": "The requested promotion was not found. The specified promotion_id may be invalid."
}
]
}{
"errors": [
{
"status": "409",
"code": "already_enrolled",
"title": "Already Enrolled",
"detail": "The provided account is already enrolled in the specified promotion."
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>"
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>"
}
]
}Promotions
Create Promotion Enrollment
Enrolls an account into an existing promotion.
Endpoint available to Partners only. The request must be authenticated by an access token that the user has granted to the Partner for the account.
The enrollment_id, returned after successfully enrolling a user,
must be stored by the partner in order to retrieve
or delete the enrollment.
OAuth
This endpoint requires the promotions:write OAuth scope.
POST
/
v2
/
promotions
Create a promotion enrollment
curl --request POST \
--url https://api.zapier.com/v2/promotions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"promotion_id": "promo_12345"
}
'import requests
url = "https://api.zapier.com/v2/promotions"
payload = { "promotion_id": "promo_12345" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({promotion_id: 'promo_12345'})
};
fetch('https://api.zapier.com/v2/promotions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zapier.com/v2/promotions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'promotion_id' => 'promo_12345'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zapier.com/v2/promotions"
payload := strings.NewReader("{\n \"promotion_id\": \"promo_12345\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.zapier.com/v2/promotions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"promotion_id\": \"promo_12345\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapier.com/v2/promotions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"promotion_id\": \"promo_12345\"\n}"
response = http.request(request)
puts response.read_body{
"enrollment_id": "<string>"
}{
"errors": [
{
"status": "401",
"code": "not_authenticated",
"title": "User Not Authenticated",
"detail": "User must be authenticated to access this resource. No valid user access token was provided."
}
]
}{
"errors": [
{
"status": "403",
"code": "permission_denied",
"title": "Permission Denied",
"detail": "You do not have permission to perform this action."
}
]
}{
"errors": [
{
"status": "404",
"code": "promotion_not_found",
"title": "Promotion Not Found",
"detail": "The requested promotion was not found. The specified promotion_id may be invalid."
}
]
}{
"errors": [
{
"status": "409",
"code": "already_enrolled",
"title": "Already Enrolled",
"detail": "The provided account is already enrolled in the specified promotion."
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>"
}
]
}{
"errors": [
{
"status": "<string>",
"code": "<string>",
"title": "<string>",
"detail": "<string>"
}
]
}This API is rate limited.
Authorizations
The user access token for the user you would like to enroll. See our OAuth2 authentication documentation.
Body
application/json
The unique identifier for the promotions
Response
Successful Enrollment
Successful Enrollment
The unique identifier for the enrollment. This must be stored by partners.
Was this page helpful?
⌘I