Realistic profiles of people who do not exist: full name, gender, age, country and a natural phone photo. JSON over HTTPS. Within one account a full name and a photo are never repeated.
Base URL: https://randomizer.beydemir.dev
Send the API key on every request: Authorization: Bearer rk_.... Create keys at https://randomizer.beydemir.dev/portal (shown once). Keys belong on servers: a key in the URL is refused (key_in_url) and there is no CORS.
Authorization: Bearer rk_...
key_in_url
Returns up to 10 profiles per call and charges 1 credit per profile returned.
Query parameters (unknown, repeated or overlong parameters are refused with 400):
count
country
gender
male
female
minAge
maxAge
style
candid
portrait
fallback
false
Example:
curl -H "Authorization: Bearer $RANDOMIZER_KEY" "https://randomizer.beydemir.dev/v1/profiles?country=DE&gender=female&count=3"
Response:
{ "data": [ { "id": "643b2e8c-d04b-432a-b167-b39d004ec1e7", "firstName": "Rania", "lastName": "Erhardt", "fullName": "Rania Erhardt", "gender": "female", "country": "DE", "age": 40, "photo": { "url": "https://randomizer.beydemir.dev/photos/643b2e8c-d04b-432a-b167-b39d004ec1e7", "style": "candid", "width": 640, "height": 800, "focus": { "x": 0.524, "y": 0.451 } } } ], "meta": { "requested": 1, "returned": 1 } }
meta.returned is lower than count when the account already has every matching photo; meta.incomplete gives the reason and only returned profiles are charged. photo.focus is the face centre (0 to 1) for cropping.
meta.returned
meta.incomplete
photo.focus
Public, no key. AVIF, 640x800 (candid) or 640x640 (portrait), cached for a year. ?w=160|320|480 gives a smaller WebP, ?format=jpg a JPEG.
?w=160|320|480
?format=jpg
Supported countries: DE Germany, AT Austria, CH Switzerland, FR France, NL Netherlands, BE Belgium, GB United Kingdom, IE Ireland, PL Poland, CZ Czechia, SK Slovakia, HU Hungary, RO Romania, RS Serbia, HR Croatia, RU Russia, UA Ukraine, SE Sweden, NO Norway, DK Denmark, FI Finland, IT Italy, ES Spain, PT Portugal, GR Greece, US United States, CA Canada, AU Australia, IL Israel, BR Brazil, MX Mexico, TR Türkiye, AZ Azerbaijan, IR Iran, SA Saudi Arabia, AE United Arab Emirates, EG Egypt, IN India, CN China, TW Taiwan, JP Japan, KR South Korea, VN Vietnam, TH Thailand, ID Indonesia, NG Nigeria, ZA South Africa.
Balance, limits and profiles per day for the last 30 days. Free of charge.
{ "account": { "id": "acc_...", "plan": "free" }, "credits": 2840, "unlimited": false, "limits": { "perMinute": 60, "perDay": 1000 }, "today": { "used": 160, "remaining": 840, "resetsIn": 30512 }, "last30Days": [{ "day": "2026-10-14", "n": 160 }] }
1 credit = 1 profile; credits are shared with the browser generator and never expire. Buy them at https://randomizer.beydemir.dev/portal. A request the balance cannot fully cover is refused with 402 and charges nothing. Accounts may request 60 profiles a minute and 1,000 a day (UTC).
Response headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (seconds), X-Daily-Limit, X-Daily-Remaining, X-Credits-Remaining, X-Request-Id. On 429, wait Retry-After seconds.
RateLimit-Limit
RateLimit-Remaining
RateLimit-Reset
X-Daily-Limit
X-Daily-Remaining
X-Credits-Remaining
X-Request-Id
Retry-After
{ "error": { "code": "...", "message": "..." }, "requestId": "..." }. Branch on code; messages may change.
{ "error": { "code": "...", "message": "..." }, "requestId": "..." }
code
invalid_parameter
unknown_parameter
missing_key
invalid_key
revoked_key
insufficient_credits
account_suspended
no_photo_left
names_exhausted
rate_limited
daily_quota_exceeded
photo_unavailable
busy