Send A2A tasks
Agent2Agent (A2A) suits agents that send a structured task and collect the result later, rather than calling tools one by one.
| Setting | Value |
|---|---|
| Agent card | GET https://api.inside.chat/.well-known/agent-card.json, no authentication |
| Endpoint | POST https://api.inside.chat/a2a |
| Headers | Authorization: Bearer ..., Content-Type: application/json, A2A-Version: 1.0 |
| Token | An installation token, or an OAuth token requested with resource=https://api.inside.chat/a2a. REST and MCP OAuth tokens are rejected. |
| Methods | SendMessage, GetTask, ListTasks, CancelTask |
Send a task and poll
Section titled “Send a task and poll”-
Send the task with
SendMessage. The message has exactly one data part with askilland itsarguments.Terminal window curl -s https://api.inside.chat/a2a \-H "Authorization: Bearer $INSIDE_GATEWAY_TOKEN" \-H "Content-Type: application/json" \-H "A2A-Version: 1.0" \-d '{"jsonrpc": "2.0","id": 1,"method": "SendMessage","params": {"message": {"messageId": "weekly-insights-2026-10-13","role": "ROLE_USER","parts": [{"data": {"skill": "support_insights", "arguments": {"website_id": "web_4927_123", "range": "last-7-days"}},"mediaType": "application/json"}]},"configuration": {"returnImmediately": true, "acceptedOutputModes": ["application/json"]}}}' -
Poll with
GetTaskuntil the task reachesTASK_STATE_COMPLETED,TASK_STATE_FAILEDorTASK_STATE_CANCELED.Terminal window curl -s https://api.inside.chat/a2a \-H "Authorization: Bearer $INSIDE_GATEWAY_TOKEN" \-H "Content-Type: application/json" \-H "A2A-Version: 1.0" \-d '{"jsonrpc":"2.0","id":2,"method":"GetTask","params":{"id":"task_..."}}' -
Read the artifact. A completed task has one JSON artifact of at most 128 KiB.
With returnImmediately: true the task returns as TASK_STATE_SUBMITTED or TASK_STATE_WORKING. Without it, the request waits for the final state.
Skills
Section titled “Skills”Free text isn’t interpreted. Each skill takes structured arguments:
| Skill | Arguments | Required scopes |
|---|---|---|
support_insights |
website_id, range (today, last-7-days, last-month or date), and start, end, timezone for date |
reports_read, conversation_read |
conversation_evidence |
conversation_id, optional limit (1 to 100, default 50) and cursor |
conversation_read, message_content_read, contact_read_pii, plus the message_content and pii flags |
configuration_inspection |
website_id, path (/ai/features or /ai/features/{feature_id}), optional limit and cursor |
config_read |
contact_inspection |
contact_id |
contact_read; personal fields need contact_read_pii and pii |
offline_language_detection |
feature_id, expected_version, context: {"type":"text","text":"...","default_language":"en"} |
ai_features_read, ai_execute |
Task rules
Section titled “Task rules”- Retries. If a reply is lost, resend the same
messageId, skill and arguments. You get the same task back without running it again. - Paging. Transcript and configuration results are single pages marked
partial: true. Request the next page with a newmessageId. - Lifetime. Tasks expire after 15 minutes, or sooner if the credential expires. Only the credential that created a task can read it; a new OAuth token can’t see tasks created by an earlier one.
- Cancelling.
CancelTaskstops a result from being published. Work already sent to the website may still finish. - Capacity. Each installation can hold up to 100 unexpired tasks, with up to 5 running at once. Every A2A request uses one unit of the app’s shared quota, and a new task also uses one for the underlying read.
- Streaming and push notifications aren’t supported.