Skip to content
Median
Esc
↑↓navigate↵open⌘Jpreview

Send typing

Shows the visitor’s typing indicator in your team’s inbox, and a no-op before the session’s first message. The signal expires on its own after a few seconds, so send it while the visitor types and let it lapse.

POST/typing
Authorization
AuthorizationBearer token · headerrequired
A MEDIAN_KEY from Settings under API. It starts with `median_key_` and stays on your server. The tool endpoint routes also accept an OAuth access token (`median_oat_`) from `median login` or an MCP client, acting as the person who approved it. The messaging routes accept only a Median key.
Request body
requiredapplication/json
sessionstringrequired
The visitor's session token.
min length 8 · max length 128
isTypingbooleanrequired
Whether they are mid sentence.
Responses
200The signal was recorded.
okboolean
400`invalid_json`: the body is not a JSON object. `invalid_request`: `session` is not a string or `isTyping` is not a boolean. `invalid_session`: the session is not 8 to 128 characters.
errorobjectrequired
Show properties
codestringrequired
Branch on this rather than on the message.
messagestringrequired
401`missing_api_key`: no bearer token. `invalid_api_key`: the key matches no organization or was revoked. `publishable_key`: a `median_pk_` key was sent. An OAuth access token is refused here with `invalid_api_key`.
errorobjectrequired
Show properties
codestringrequired
Branch on this rather than on the message.
messagestringrequired
429The organization's API allowance for this class of request is used up. Wait the `Retry-After` header's seconds. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobjectrequired
Show properties
codestringrequired
Branch on this rather than on the message.
messagestringrequired
Request
curl -X POST "https://api.median.sh/v1/typing" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "session": "user_42",
  "isTyping": true
}'
Response
{
  "ok": true
}