Dashboard HTTP API

This page documents the REST HTTP endpoints for dashboard operations. All endpoints are prefixed with /api/personas/{persona_id}/dashboard/.

All endpoints support an optional callback_url parameter. When provided, Ema sends the result to the callback URL upon completion instead of requiring polling.

Upload and Run Rows

Upload a file and automatically create and trigger rows.

PropertyValue
URL/api/personas/{persona_id}/dashboard/upload-and-run-rows
HTTP MethodPOST
ProtocolREST (multipart/form-data)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesmultipart/form-data

Path Parameters

ParameterTypeDescription
persona_idstringUUID of the AI Employee

Form Data

FieldTypeRequiredDescription
filefileYesCSV or XLSX file with row data
callback_urlstringNoURL to receive results upon completion

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/upload-and-run-rows \
 -H "Authorization: Bearer <access_token>" \
 -F "[email protected]" \
 -F "callback_url=https://your-server.com/webhook"

Response

FieldTypeDescription
row_idsarrayUUIDs of the created rows

Get Row Result

Retrieve the result of a single processed row.

PropertyValue
URL/api/personas/{persona_id}/dashboard/get-row-result
HTTP MethodGET
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token

Query Parameters

ParameterTypeRequiredDescription
row_idstringYesUUID of the row

Example

curl -X GET "https://your-instance.ema.co/api/personas/<persona_id>/dashboard/get-row-result?row_id=<row_id>" \
 -H "Authorization: Bearer <access_token>"

Response

Returns a DashboardRowResult with the row's state and output values.

Get All Row Results

Retrieve results for all rows in the dashboard.

PropertyValue
URL/api/personas/{persona_id}/dashboard/get-all-row-results
HTTP MethodGET
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token

Example

curl -X GET https://your-instance.ema.co/api/personas/<persona_id>/dashboard/get-all-row-results \
 -H "Authorization: Bearer <access_token>"

Response

Returns an array of DashboardRowResult objects.

Add Row

Add a single row to the dashboard.

PropertyValue
URL/api/personas/{persona_id}/dashboard/add-row
HTTP MethodPOST
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
column_valuesobjectYesMap of column name to value
callback_urlstringNoURL to receive results

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/add-row \
 -H "Authorization: Bearer <access_token>" \
 -H "Content-Type: application/json" \
 -d '{
 "column_values": {
 "company_name": "Acme Corp",
 "website": "https://acme.com"
 }
 }'

Update Row

Update values in an existing row.

PropertyValue
URL/api/personas/{persona_id}/dashboard/update-row
HTTP MethodPOST
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
row_idstringYesUUID of the row to update
column_valuesobjectYesMap of column name to new value

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/update-row \
 -H "Authorization: Bearer <access_token>" \
 -H "Content-Type: application/json" \
 -d '{
 "row_id": "<row-uuid>",
 "column_values": {
 "company_name": "Acme Corporation"
 }
 }'

Delete Rows

Delete one or more rows from the dashboard.

PropertyValue
URL/api/personas/{persona_id}/dashboard/delete-rows
HTTP MethodPOST
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
row_idsarrayYesList of row UUIDs to delete

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/delete-rows \
 -H "Authorization: Bearer <access_token>" \
 -H "Content-Type: application/json" \
 -d '{
 "row_ids": ["<row-uuid-1>", "<row-uuid-2>"]
 }'

Trigger Row

Trigger workflow processing for a specific row.

PropertyValue
URL/api/personas/{persona_id}/dashboard/trigger-row
HTTP MethodPOST
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
row_idstringYesUUID of the row to trigger
callback_urlstringNoURL to receive results

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/trigger-row \
 -H "Authorization: Bearer <access_token>" \
 -H "Content-Type: application/json" \
 -d '{
 "row_id": "<row-uuid>",
 "callback_url": "https://your-server.com/webhook"
 }'

Get Continuation Message

Retrieve the HITL continuation message for a paused row.

PropertyValue
URL/api/personas/{persona_id}/dashboard/get-continuation-message
HTTP MethodGET
ProtocolREST (HTTP/JSON)

Query Parameters

ParameterTypeRequiredDescription
row_idstringYesUUID of the paused row

Example

curl -X GET "https://your-instance.ema.co/api/personas/<persona_id>/dashboard/get-continuation-message?row_id=<row_id>" \
 -H "Authorization: Bearer <access_token>"

Response

Returns the HITL message (form, buttons, or text prompt) that the workflow is waiting for.

Continue Row

Submit a HITL response to resume a paused workflow.

PropertyValue
URL/api/personas/{persona_id}/dashboard/continue-row
HTTP MethodPOST
ProtocolREST (HTTP/JSON)

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
row_idstringYesUUID of the paused row
responseobjectYesThe user's response to the HITL prompt
callback_urlstringNoURL to receive results

Example

curl -X POST https://your-instance.ema.co/api/personas/<persona_id>/dashboard/continue-row \
 -H "Authorization: Bearer <access_token>" \
 -H "Content-Type: application/json" \
 -d '{
 "row_id": "<row-uuid>",
 "response": {
 "approved": true,
 "comment": "Looks good, proceed."
 }
 }'

Last updated: Aug 13, 2026