Enroll people into a campaign: up to 100 at once (`201`), more through a job (`202`). Unknown people, suppressed addresses and people already enrolled are skipped.
/v1/enrollmentsAuthorizationBearer token · headerrequiredAn API key (nb_live_…, nb_test_…), a workspace token (nbs_…) or a CLI token (nbc_…).
Idempotency-KeystringrequiredA stable key for this logical request; reuse it when retrying.
application/jsoncampaign_idstringrequiredThe campaign (cmp_…).
emailsstring[] | nullPeople by address, at most 1,000; an address that is no person of the workspace is skipped.
group_idstring | nullA group's members (grp_…).
person_idsstring[] | nullPeople by id (per_…), at most 1,000.
segment_idstring | nullThe people a segment matches (seg_…).
Up to 100 people: the enrollments made and the people skipped.
dataEnrollmentObject[]requiredThe enrollments created.
Show propertiesHide properties
EnrollmentObjectcampaign_idId_Campaignrequiredcreated_atTimestamprequiredidId_Enrollmentrequiredmessage_idId_Message | nullShow propertiesHide properties
stringnullnext_run_atTimestamp | nullShow propertiesHide properties
string<date-time>nullpersonPersonRefrequiredThe person an enrollment is for.
Show propertiesHide properties
emailstringrequiredidId_Personrequirednamestring | nullThe given and family names, when the person has either.
positioninteger<int32>requiredThe step it is at, 1 for the first.
sender_identity_idId_SenderIdentity | nullShow propertiesHide properties
stringnullstatusEnrollmentStatusrequiredAn enrollment's lifecycle (enrollments.status).
activepausedcompletedrepliedstoppedfailedstatus_detailstring | nullWhy it ended, when it ended early.
updated_atTimestamprequiredwaiting_forId_SenderIdentity | nullShow propertiesHide properties
stringnullskippedSkipped[]requiredThe people that were not enrolled, and why.
Show propertiesHide properties
Skippedemailstring | nullThe address, when the request named the person by it.
person_idId_Person | nullShow propertiesHide properties
stringnullreasonSkipReasonrequiredWhy a person was not enrolled.
not_foundsuppressedalready_enrolledMore than 100 people: the enrollment.add job; Location names it.
attemptsinteger<int32>requiredFailed runs so far; a yield is not a failure.
cancel_requested_atTimestamp | nullShow propertiesHide properties
string<date-time>nullcreated_atTimestamprequiredfinished_atTimestamp | nullShow propertiesHide properties
string<date-time>nullidIdrequiredkindstringrequiredThe kind of work, such as webhook.deliver.
last_errorLastError | nullShow propertiesHide properties
atTimestamprequiredWhen the job's row last changed: the moment of the error for a job that ended, and at or after it while the job is still waiting or running (the row keeps no separate time for its error).
codestringrequiredA short machine-readable code (error, lease_expired, unknown_kind, cancelled, …).
detailstringrequiredA human-readable explanation.
nullprogressanyWhat the job has done so far, as its last checkpoint recorded it.
resultanyThe job's bounded result, once it completed (at most 64 KiB).
statestringrequiredavailable (waiting for its run), running, completed, failed, cancelled, or
needs_review (an operator decides whether an ambiguous external effect happened). New
values may be added.
updated_atTimestamprequiredNo valid credential.
codestringrequiredThe code from the closed registry; programs branch on it, never on the text. New codes may be added.
detailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
The credential lacks campaigns:write.
codestringrequiredThe code from the closed registry; programs branch on it, never on the text. New codes may be added.
detailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
No such campaign, group or segment in this workspace.
codestringrequiredThe code from the closed registry; programs branch on it, never on the text. New codes may be added.
detailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
The campaign is archived (invalid_state).
codestringrequiredThe code from the closed registry; programs branch on it, never on the text. New codes may be added.
detailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
The body is invalid, or names no source of people or more than one.
codestringrequiredThe code from the closed registry; programs branch on it, never on the text. New codes may be added.
detailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.