Skip to content
Console

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
  1. Send the task with SendMessage. The message has exactly one data part with a skill and its arguments.

    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"]}
    }
    }'
  2. Poll with GetTask until the task reaches TASK_STATE_COMPLETED, TASK_STATE_FAILED or TASK_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_..."}}'
  3. 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.

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
  • 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 new messageId.
  • 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. CancelTask stops 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.