curl --request POST \
--url https://api.rb2b.com/api/v1/email_to_activity \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"emails": [
"alice@example.com",
"bob@example.com"
],
"email": "alice@example.com"
}
'import requests
url = "https://api.rb2b.com/api/v1/email_to_activity"
payload = {
"emails": ["alice@example.com", "bob@example.com"],
"email": "alice@example.com"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['alice@example.com', 'bob@example.com'], email: 'alice@example.com'})
};
fetch('https://api.rb2b.com/api/v1/email_to_activity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"results": [
{
"email": "alice@example.com",
"last_active": "2026-05-01"
}
],
"match_count": 1,
"credits_charged": 1,
"credits_exhausted": false
}{
"error": "missing emails",
"max": 1000
}{
"error": "missing_api_key"
}{
"error": "insufficient_api_credits",
"required": "1.0",
"remaining": "0.0"
}{
"error": "service_unavailable_for_key"
}Email Activity Check
See when an email was last active online. Send one email address per request, or an array of up to 1,000 addresses in a single request.
Batch endpoint: provide emails (an array of up to 1,000 plaintext addresses) or a single email. Duplicate addresses count once (matching is case-insensitive and ignores surrounding whitespace). The response lists only the addresses with known activity, each with its last_active date; addresses with no match are omitted from results.
Billing: 1 credit per matched email. Misses are free. Matches are billed in input order until the account’s credit balance runs out; any further matches are dropped from the response and credits_exhausted is returned as true. match_count and credits_charged both reflect the number of matches actually returned and billed.
curl --request POST \
--url https://api.rb2b.com/api/v1/email_to_activity \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"emails": [
"alice@example.com",
"bob@example.com"
],
"email": "alice@example.com"
}
'import requests
url = "https://api.rb2b.com/api/v1/email_to_activity"
payload = {
"emails": ["alice@example.com", "bob@example.com"],
"email": "alice@example.com"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({emails: ['alice@example.com', 'bob@example.com'], email: 'alice@example.com'})
};
fetch('https://api.rb2b.com/api/v1/email_to_activity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"results": [
{
"email": "alice@example.com",
"last_active": "2026-05-01"
}
],
"match_count": 1,
"credits_charged": 1,
"credits_exhausted": false
}{
"error": "missing emails",
"max": 1000
}{
"error": "missing_api_key"
}{
"error": "insufficient_api_credits",
"required": "1.0",
"remaining": "0.0"
}{
"error": "service_unavailable_for_key"
}Authorizations
Per-account API key. Also accepted as Api-Key or Authorization: Bearer <key>.
Body
Provide emails (preferred, up to 1,000 addresses) or a single email. When both are present, emails wins.
Email addresses to check, up to 1,000 per request. Blank entries are ignored; duplicates count once (matching is case-insensitive and ignores surrounding whitespace).
1000["alice@example.com", "bob@example.com"]
Single email address (alternative to the emails array).
"alice@example.com"
Response
Activity results for matched emails (1 credit per match)
One entry per matched (and billed) email, in input order. Emails with no known activity are omitted.
Show child attributes
Show child attributes
Number of matched emails returned in results.
1
Credits charged for this request; equal to the number of matches returned (1 credit per match).
1
true when the account ran out of credits before all matches could be billed; the unbilled matches are not returned.
false

