Your first request in five minutes.
By the end of this page you'll have fetched an OAuth2 token, found your language, read and written a profile, and kicked off an async batch job.
Every catalogue and audience call is scoped to a language. You'll grab a language_id in step 2 and reuse it everywhere.
1Get an access token
The API uses the OAuth2 client-credentials flow. Exchange your client id and secret for a short-lived access token, then send it as a Bearer token on every request.
curl -X POST https://app.reloadify.com/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}'
$res = $client->post('https://app.reloadify.com/oauth/token', [
'json' => [
'grant_type' => 'client_credentials',
'client_id' => getenv('RELOADIFY_CLIENT_ID'),
'client_secret' => getenv('RELOADIFY_CLIENT_SECRET'),
],
]);
$token = json_decode($res->getBody())->access_token;
import os, requests
token = requests.post(
"https://app.reloadify.com/oauth/token",
json={
"grant_type": "client_credentials",
"client_id": os.environ["RELOADIFY_CLIENT_ID"],
"client_secret": os.environ["RELOADIFY_CLIENT_SECRET"],
},
).json()["access_token"]
require "httparty"
token = HTTParty.post(
"https://app.reloadify.com/oauth/token",
body: {
grant_type: "client_credentials",
client_id: ENV["RELOADIFY_CLIENT_ID"],
client_secret: ENV["RELOADIFY_CLIENT_SECRET"]
}
)["access_token"]
2Find your language
List the languages (stores/markets) available to your credentials. You'll use one language's id in every catalogue and audience path.
curl https://app.reloadify.com/api/v2/languages \
-H "Authorization: Bearer {access_token}"
$languages = json_decode(
$client->get('/api/v2/languages', $auth)->getBody()
);
languages = requests.get(
"https://app.reloadify.com/api/v2/languages",
headers={"Authorization": f"Bearer {token}"},
).json()
languages = HTTParty.get(
"https://app.reloadify.com/api/v2/languages",
headers: { "Authorization" => "Bearer #{token}" }
)
[
{ "id": "42", "name": "Nederlands", "code": "nl", "active": "true" },
{ "id": "43", "name": "English", "code": "en", "active": "true" }
]
3List profiles
Read profiles for a language. Lists are paginated with page and per_page (max 250), and accept updated_after/created_after filters so you can sync only what changed.
curl "https://app.reloadify.com/api/v2/languages/42/profiles?per_page=3" \
-H "Authorization: Bearer {access_token}"
$profiles = json_decode(
$client->get('/api/v2/languages/42/profiles', [
'query' => ['per_page' => 3],
] + $auth)->getBody()
);
profiles = requests.get(
"https://app.reloadify.com/api/v2/languages/42/profiles",
params={"per_page": 3},
headers={"Authorization": f"Bearer {token}"},
).json()
profiles = HTTParty.get(
"https://app.reloadify.com/api/v2/languages/42/profiles",
query: { per_page: 3 },
headers: { "Authorization" => "Bearer #{token}" }
)
4Create or update a profile
Send a PUT with a profile object to create it — or update it if a profile with that id/email already exists. Only email is required.
curl -X PUT https://app.reloadify.com/api/v2/languages/42/profiles \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"profile": {
"email": "noor@example.com",
"first_name": "Noor",
"subscribed_to_newsletter": true,
"gender": "female"
}
}'
$client->put('/api/v2/languages/42/profiles', [
'json' => ['profile' => [
'email' => 'noor@example.com',
'first_name' => 'Noor',
'subscribed_to_newsletter' => true,
]],
] + $auth);
requests.put(
"https://app.reloadify.com/api/v2/languages/42/profiles",
headers={"Authorization": f"Bearer {token}"},
json={"profile": {
"email": "noor@example.com",
"first_name": "Noor",
"subscribed_to_newsletter": True,
}},
)
HTTParty.put(
"https://app.reloadify.com/api/v2/languages/42/profiles",
headers: { "Authorization" => "Bearer #{token}", "Content-Type" => "application/json" },
body: { profile: { email: "noor@example.com", first_name: "Noor" } }.to_json
)
5Bulk-sync with batch jobs
Importing thousands of records? Post them to the resource's batch_jobs endpoint. It returns a batch_id immediately and processes asynchronously — then you poll for the result.
curl -X POST https://app.reloadify.com/api/v2/languages/42/profiles/batch_jobs \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{ "profiles": [ { "email": "a@example.com" }, { "email": "b@example.com" } ] }'
# → 202 { "batch_id": "abc123", "status": "queued", "status_url": "…" }
# poll until done, then read per-record results
curl https://app.reloadify.com/api/v2/batch_jobs/abc123 \
-H "Authorization: Bearer {access_token}"
Next steps
- Browse the full API reference — every resource and endpoint, with request and response shapes.
- Learn the batch-job lifecycle for syncing large catalogues and audiences.
- Set up coupon webhooks to receive signed events from Reloadify.
- Stuck? Hit Ask AI in the top bar — it answers from these docs.