Retrieve Usage
GET
/
usage
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.usage.get();curl -X GET 'https://api.resend.com/usage' \
-H 'Authorization: Bearer re_xxxxxxxxx'{
"object": "usage",
"emails": {
"daily": {
"used": 10,
"limit": 100,
"sent": 8,
"received": 2,
"resets_at": "2026-07-29T00:00:00.000Z"
},
"monthly": {
"used": 100,
"limit": 3000,
"sent": 80,
"received": 20,
"resets_at": "2026-08-01T00:00:00.000Z"
}
},
"contacts": {
"used": 10,
"limit": 3000
},
"segments": {
"used": 1,
"limit": 3
},
"broadcasts": {
"used": 2,
"limit": null
},
"ai_credits": {
"used": 5,
"limit": 100,
"next_increase_at": null
},
"automation_runs": {
"used": 3,
"limit": 10000,
"resets_at": "2026-08-01T00:00:00.000Z"
},
"domains": {
"used": 1,
"limit": 1
},
"rate_limit": {
"limit": 1000,
"duration": "1000ms"
}
}Response Fields
Section titled “Response Fields”string
Always usage.
object
Email sending and receiving quota, broken down by day and month.
Show properties
object
Rolling 24-hour quota. Shaped as { used, limit, sent, received, resets_at }. limit is null once the team has an active sending subscription — daily caps only apply to the free tier.
object
Calendar-month quota, shaped the same as daily. limit is always a number that scales with the plan.
object
Shaped as { used, limit }.
object
Shaped as { used, limit }. limit is null once the team has an active contacts subscription — segment caps only apply to the free tier.
object
Shaped as { used, limit }. limit is always null — broadcasts have no cap.
object
Shaped as { used, limit, next_increase_at }. next_increase_at is null until the team’s first AI credit use in the current rolling window; once credits are used, it’s when the oldest usage ages out and frees up quota.
object
Shaped as { used, limit, resets_at }.
object
Shaped as { used, limit }. limit is null when the plan has no domain cap.
object
The team’s API rate limit, shaped as { limit, duration }. duration is a string like "1000ms".
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.usage.get();curl -X GET 'https://api.resend.com/usage' \
-H 'Authorization: Bearer re_xxxxxxxxx'{
"object": "usage",
"emails": {
"daily": {
"used": 10,
"limit": 100,
"sent": 8,
"received": 2,
"resets_at": "2026-07-29T00:00:00.000Z"
},
"monthly": {
"used": 100,
"limit": 3000,
"sent": 80,
"received": 20,
"resets_at": "2026-08-01T00:00:00.000Z"
}
},
"contacts": {
"used": 10,
"limit": 3000
},
"segments": {
"used": 1,
"limit": 3
},
"broadcasts": {
"used": 2,
"limit": null
},
"ai_credits": {
"used": 5,
"limit": 100,
"next_increase_at": null
},
"automation_runs": {
"used": 3,
"limit": 10000,
"resets_at": "2026-08-01T00:00:00.000Z"
},
"domains": {
"used": 1,
"limit": 1
},
"rate_limit": {
"limit": 1000,
"duration": "1000ms"
}
}Was this page helpful?
⌘I