name of a persona is freeform with a maximum of 50 characters. A first name and last name or initial, such as “John Z.”, is recommended.name field.MESSAGING task on the Pagepages_messaging permission<PAGE_ID>POST request to the /<PAGE_ID>/personas endpoint with the name and profile_picture_url parameters.| Parameter | Type | Description |
|---|---|---|
name | String | The display name of the persona. Maximum 50 characters. |
profile_picture_url | String | The URL of the profile picture for the persona. The image is downloaded and re-uploaded to Meta servers. |
curl -X POST "https://graph.facebook.com/<LATEST_API_VERSION>/<PAGE_ID>/personas?access_token=<PAGE_ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "Adam",
"profile_picture_url": "https://example.com/adam-image.jpg"
}'
{ "id": "<PERSONA_ID>" }
| Property | Type | Description |
|---|---|---|
id | String | The unique ID of the persona. |
GET request to the /<PAGE_ID>/personas endpoint. Results are paginated using cursor-based pagination.fields parameter to select which fields to return. You can also use the limit, after, and before parameters to paginate large result sets.curl -X GET "https://graph.facebook.com/<LATEST_API_VERSION>/<PAGE_ID>/personas?access_token=<PAGE_ACCESS_TOKEN>"
{ "data": [ { "name": "Adam", "profile_picture_url": "https://facebook.com/adam-image.jpg", "id": "<PERSONA_A_ID>" }, { "name": "David Mark", "profile_picture_url": "https://facebook.com/david-image.jpg", "id": "<PERSONA_B_ID>" } ], "paging": { "cursors": { "before": "QVFIUlMtR2ZATQlRtVUZALUlloV1", "after": "QVFIUkpnMGx0aTNvUjJNVmJUT0Yw" } } }
| Property | Type | Description |
|---|---|---|
data | Array | An array of persona objects. |
paging | Object | Contains before and after cursors for paginating large result sets. |
GET request to the /<PERSONA_ID> endpoint.curl -X GET "https://graph.facebook.com/<LATEST_API_VERSION>/<PERSONA_ID>?access_token=<PAGE_ACCESS_TOKEN>"
{ "name": "Adam", "profile_picture_url": "https://facebook.com/adam-image.jpg", "id": "<PERSONA_ID>" }
| Property | Type | Description |
|---|---|---|
name | String | The display name of the persona. |
profile_picture_url | String | The URL of the profile picture for the persona. |
id | String | The unique ID of the persona. |
POST request to the /<PAGE_ID>/messages endpoint with the persona_id parameter along with the recipient and message parameters. If you do not include persona_id, the message is sent using the Page’s identity.curl -X POST "https://graph.facebook.com/<LATEST_API_VERSION>/<PAGE_ID>/messages?access_token=<PAGE_ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"recipient": { "id": "<PSID>" },
"message": { "text": "Hello world!" },
"persona_id": "<PERSONA_ID>"
}'
DELETE request to the /<PERSONA_ID> endpoint. Deleting a persona is a soft delete — messages previously sent by this persona continue to appear in the conversation history, but the persona can no longer send new messages.curl -X DELETE "https://graph.facebook.com/<LATEST_API_VERSION>/<PERSONA_ID>?access_token=<PAGE_ACCESS_TOKEN>"
{ "success": true }
| Property | Type | Description |
|---|---|---|
success | Boolean | Whether the delete operation succeeded. |