API
Back to website
Quickstart

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.

POST/oauth/token
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.

GET/v2/languages
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}" }
)
Response · 200
[
  { "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.

GET/v2/languages/{language_id}/profiles
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.

PUT/v2/languages/{language_id}/profiles
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.

POST/v2/languages/{language_id}/profiles/batch_jobs
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