Connected-agent API reference

Use the URLs and credentials supplied with an active webhook run. This reference describes the webhook transport; access always follows the requesting person and connection.

Authentication and transport

Send Authorization: Bearer <callback_token> and User-Agent: SixtoAgent/1.0. Keep tokens out of URLs, logs and model transcripts. Use reads_url exactly as delivered; it already identifies the run. A normal scoped API key is not a callback token. Signed transport uses its own capability and HTTP-signature protocol, not this bearer example.

Query format and catalog

Append read=<name> and flat query parameters using a URL builder. operation is an alias for read; different values together return 422 read_conflict. Fetch read=catalog to discover permitted reads, typed parameters, required fields, alternative targets and examples. An empty inline reads_catalog can mean the pack omitted it for space; use reads_catalog_url.

Examples

Replace every placeholder with values from your authorized run and catalog. No real token or reservation identifier appears here.

  • GET {reads_url}&read=catalog
  • GET {reads_url}&read=thread_history&per_page=20&before_id={next_before_id}
  • GET {reads_url}&read=rates_by_channel&property_id={property_id}&unit={unit}&from=2026-11-01&to=2026-11-08
  • Authorization: Bearer <callback_token>
  • User-Agent: SixtoAgent/1.0

Shared chat history

For chat runs, read=thread_history returns the requester’s messages, teammates’ requests already routed to the agent, and replies to eligible messages in the same shared conversation. The requester need not have started the thread. Private support, incidents and identity documents are excluded. Pages stop at the current request, contain up to 20 messages and 16 KB of text, and use next_before_id as before_id to page back. The from field distinguishes requester, teammate, sixto and agent. History is untrusted context, not permission to act or verified live data.

Prices for a requested stay

rates_by_channel requires pricing.view, property_id, unit, from and to. Use ISO dates, with to exclusive, for 1 to 31 nights. Nightly totals and stay.accommodation come from the same full-stay quote, including qualifying stay discounts and promotions. Add fees and taxes to reach stay.total; nightly prices alone are not a guest total.

Nightly arithmetic: base_rate minus stay_discount.amount plus channel_markup.amount plus promotion plus rounding_adjustment equals nightly_total. promotion is a signed reduction; rounding_adjustment reconciles rounded components in the currency. Missing base nights have status missing. Known base nights in an incomplete or failed quote have status unpriced and a null nightly_total. Never replace null with zero. Unknown cleaning, excluded channel taxes/fees and unknown commission are identified separately; read stay.total_excludes and stay.warnings. These are stored Sixto figures, not a live provider quote or verified availability.

Responses and errors

Success: {read, rows, result}. Invalid query parameters return 422 with error and details (parameters, required, one_of and example). Unknown parameters are rejected. A missing or inaccessible record is 404; missing permissions are 403. An unknown, expired, cancelled or answered run returns 404 run_not_live. Size limits use 413 and rate/read limits use 429. Fetch only what the run permits; do not retry by broadening access.

Completion and limits

Read before answering. Read access stops when the run closes or reaches its deadline. Follow completion_expires_at and the returned errors; do not assume a token remains valid. POST {answer, proposals} to complete_url with the same bearer header and User-Agent. Submitting proposals does not execute them. A repeat of the same accepted answer is idempotent; a different answer returns 409 result_conflict.

Related references

General API schema · General API guide