entry_id or external_id; rows identified by external_id are upserted when no matching entry exists. Batch size is capped by the configured maximum. The response contains a per-entry result with action (created, updated, unchanged, or failed). Successful rows include the resulting entry. Failed rows include a top-level message for authorization or not-found failures, and errors when the row has structured field validation failures. A row with message equal to Profile is being updated; retry this row can be resent after a concurrent profile update finishes.tier: ID of one of the directory's tiers. null puts the entry back on the directory's default tier. Directory owners only; the row fails when tiers are not enabled or the tier belongs to another directory.featured, displayOnInternalDirectory, internalDescription and the internal...Cta... fields: directory owners only; the row fails when the matching feature (featured entries, internal directory) is not enabled.userAssignedFilterOptions: replaces the entry's options in every filter with the sent list.userAssignedFilterOptionsByFilter: list of {filterId, optionIds}; replaces the options of the listed filters only and keeps every other filter as it is. An empty optionIds clears that filter. Cannot be combined with userAssignedFilterOptions in the same row. Option rules (selection limits, required filters, approval flow) are checked on the resulting full list and reported under userAssignedFilterOptions.certifications: list of {certificationId, quantity} using the directory's certifications; replaces the entry's certifications with exactly this list, in this order. quantity is optional and defaults to 1. An empty list removes every certification. A partner holds at most 10, and a certification can be listed once. The row fails when certifications are not enabled or a certification belongs to another directory.badges: list of {id} using the directory's badges; replaces the entry's badges with exactly this list, in this order (an order sent with a badge is ignored). An empty list removes every badge; null keeps them. A partner holds at most 10, and a badge can be listed once. The row fails when badges are not enabled and the list is not empty, or a badge belongs to another directory. When the directory manages badges, an entry owner's row with a changed list fails with errors.badges, or with message if the badges change between that check and the write; an unchanged list is accepted. Each successful row's entry lists the badges in badge order.emails: bulk rows never send owner invitations) fails with an error per unknown field. Fields returned by the partner read response are accepted, and read-only ones (id, type, slug, lastModified, awards, systemAssignedFilterOptions, ...) are ignored, so a row copied from a read can be sent back.curl --location 'https://v1.api.partnerpage.io/api/directory/private/v1alpha/external/directories//entries/partners/bulk/' \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"entries": [
{
"externalId": "0015g00000XyZabAAF",
"title": "Acme Agency",
"status": "public",
"tier": "6f1c2a8e-3b7d-4c55-9a2e-1d0b8f4e7c21",
"certifications": [
{
"certificationId": "9b2e4f60-1c3a-4d8e-b7f5-2a6c0d9e8b14"
},
{
"certificationId": "c4d1a7e2-5f9b-4e03-8a6d-7b2f1e0c9d35",
"quantity": 2
}
]
},
{
"entryId": "3e8a1f4c-7b2d-4a96-b0e5-9c1d2f6a8b73",
"certifications": [],
"badges": [
{
"id": "5a7d2c91-8e4b-4f36-a1c0-3b9e6d2f7a48"
},
{
"id": "e2b6f8a3-0d5c-4719-9e8a-6c4b1d3f5a27"
}
]
}
]
}'[
{
"entryId": "09a8b554-45ca-4bab-a638-265db4b3e828",
"externalId": "string",
"action": "created",
"entry": {
"href": "string",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"headline": "string",
"type": "string",
"slug": "string",
"customSlug": "string",
"status": "hidden",
"icon": "string",
"image": "string",
"iconDark": "string",
"imageDark": "string",
"website": "http://example.com",
"lastModified": {
"modified": "string",
"user": {
"id": "string",
"fullName": "string",
"email": "user@example.com",
"type": "string"
}
},
"userAssignedFilterOptions": "string",
"systemAssignedFilterOptions": "string",
"mappedAssignedFilterOptions": "string",
"canSubmitForReview": true,
"readyForReview": true,
"externalId": "string",
"description": "string",
"umamiShareId": "string",
"integrationDescription": "string",
"location": "string",
"callToActionUrl": "string",
"callToActionLabel": "string",
"externalUrl": "http://example.com",
"awards": [
{
"title": "string",
"file": "string",
"fileUrl": "string",
"order": 0,
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
],
"badges": [
{
"property1": "string",
"property2": "string"
}
],
"directory": "5277859d-f92c-478c-acab-7680a97fea68",
"approvalFlow": "string",
"supportEmail": "string",
"developerName": "string",
"availability": true,
"iconUrl": "string",
"imageUrl": "string",
"embedTitle": "string",
"embedSrc": "http://example.com",
"profileFields": {
"property1": "string",
"property2": "string"
},
"embedHeight": 0
},
"message": "string",
"errors": null
}
]