> For the complete documentation index, see [llms.txt](https://docs.concurrence.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.concurrence.com/api-reference/change-logs/upgrade-guide.md).

# Current Upgrade Guidance

Identify the API and SDK you use, review current integration boundaries, and plan compatibility checks before consulting historical release entries.

Start here when maintaining an existing integration. Changelogs record what changed at a point in time; the current Developer Guide and public schema define the integration contract. A source update without publication metadata is not a numbered release or proof that every deployment has changed.

## 1. Identify Your Integration

Record the API family, regional base, credential type, workspace or organization, SDK package and pinned version, channel, and selected service/configuration. See the [package snapshot](/api-reference/change-logs.md#current-sdk-packages) for the last verified package versions. Classic and Platform packages use different resources and credentials; do not replace one package with the other as a routine version bump.

## 2. Check Current Boundaries

Check these requirements when adopting the September and October 2026 updates:

| If your integration uses…                                                                                                                                  | Check or change…                                                                                                                                                                                                                                                                                                                                                                               | Guide                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Code that lists, updates, or deletes every production eval definition in a workspace                                                                       | Skip definitions with `is_default: true`; the list includes them unless you filter by `service_id`, a default accepts only `active`, and a standard metric's default returns `422` on delete                                                                                                                                                                                                   | [Production Evals](https://docs.concurrence.com/developer-guide/platform-api/safety/production-evals#list-production-eval-definitions)                                                                           |
| A workspace data query or integration endpoint that returns only practice data, such as FAQ articles, locations, or opening hours                          | Declare `declarations.reads` as `{"patient_in": "none"}`; on voice, results from undeclared reads count as record details, so a public answer to a caller who hasn't verified can be cut                                                                                                                                                                                                       | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations#endpoint-read-declarations)                                                                                                |
| A workspace voice `language` outside `en`, `es`, `ar`, `fr`, `de`, `pt`, `zh`, `ja`, `ko`, and `multilingual`, such as `en-GB` or `multi`                  | Choose a listed value the next time you save voice settings; any other value returns `422`, and a stored value reads back as stored until then                                                                                                                                                                                                                                                 | [Workspaces](https://docs.concurrence.com/developer-guide/platform-api/workspaces#voice-settings)                                                                                                                |
| A test credential that sends turns to, closes, or decides approvals on a conversation no test session started                                              | Start a new conversation with the test credential; on a conversation no test session started, those writes return `403`                                                                                                                                                                                                                                                                        | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#test-credentials)                                                                                                        |
| A voice Context Graph whose emergency path ends the call through its terminal state                                                                        | Author the path to stay with the caller; once a caller describes a medical emergency or self-harm, the agent doesn't end the call on either runtime unless a `gpt_realtime` service is set to end it after the emergency script for a medical emergency                                                                                                                                        | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#terminal-state-and-auto-hangup)                                                                                |
| A `gpt_realtime` service with `medical_emergency_ending: end_after_script`                                                                                 | Confirm the setting with the service's clinical owner; after a medical emergency described in English, the call ends once the emergency script and its closing line have played                                                                                                                                                                                                                | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#realtime-emergency-script)                                                                                     |
| External integration create, update, or delete calls, or credential create, rotate, or revoke calls, made with a workspace API key                         | Make these changes as a signed-in user, through a device-code session or an access token exchanged from a personal access token; an API key that isn't linked to a user gets `403`                                                                                                                                                                                                             | [External Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations/external-integrations#permissions)                                                                                |
| A `gpt_realtime` service or version set on a Context Graph version that isn't exactly one action state                                                     | Bind a graph version that is exactly one action state, or set `voice_config.session_provider` to `amigo`; a save that would pair `gpt_realtime` with any other graph returns `422`                                                                                                                                                                                                             | [Services](https://docs.concurrence.com/developer-guide/platform-api/workspaces/services#session-provider)                                                                                                       |
| Outbound calls with `system_prompt`, `goal`, or `outbound_task_entity_id` on a `gpt_realtime` service                                                      | Place the call without those fields, or set the service's `voice_config.session_provider` to `amigo`; such a request returns `422` and nothing is dialed                                                                                                                                                                                                                                       | [Calls](https://docs.concurrence.com/developer-guide/platform-api/conversations/calls#startup-instructions-and-patient-identity)                                                                                 |
| Code that reads `succeeded` on a conversation's tool calls                                                                                                 | Handle `null`, which means no result was recorded; SDK 0.115.0 types it `boolean \| null`                                                                                                                                                                                                                                                                                                      | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#tool-call-details)                                                                                                       |
| `latency_summary.silence_ratio` in call intelligence                                                                                                       | Read `null` as not measured, not as zero                                                                                                                                                                                                                                                                                                                                                       | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#call-intelligence-persistence)                                                                                 |
| Prompt logs joined to conversation turns by `turn_index`                                                                                                   | Join on `turn_id`, which matches the conversation's turns; `turn_index` can repeat within a conversation                                                                                                                                                                                                                                                                                       | [Prompt Logs](https://docs.concurrence.com/developer-guide/platform-api/safety/prompt-logs#link-a-prompt-to-its-turn)                                                                                            |
| A `field` or `graphql` success rule on a vendor whose 2xx body doesn't report the write                                                                    | Use an `http_status` rule; under `field` or `graphql`, a 2xx body that doesn't hold what the rule reads leaves the outcome unknown, and the write isn't sent again                                                                                                                                                                                                                             | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations#writes-answered-with-a-2xx)                                                                                                |
| A custom `realtime.voice` id on a `gpt_realtime` service                                                                                                   | Test a call after you set it; a voice id the realtime model doesn't recognize sends the call to the safe exit                                                                                                                                                                                                                                                                                  | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#graceful-degradation)                                                                                          |
| Analytics requests with a `service_id` that isn't a UUID                                                                                                   | Send service ids as UUIDs; other values return `422` on the analytics routes that filter by them                                                                                                                                                                                                                                                                                               | [Analytics](https://docs.concurrence.com/developer-guide/platform-api/safety/analytics#per-service-results)                                                                                                      |
| Code that reads an analytics `503` as zero                                                                                                                 | Treat a `503` with `Analytics unavailable` from the analytics routes that return it as no answer; on those routes a `200` is always measured                                                                                                                                                                                                                                                   | [Analytics](https://docs.concurrence.com/developer-guide/platform-api/safety/analytics#unavailable-analytics)                                                                                                    |
| Hourly analytics trends over long `date_from` and `date_to` ranges                                                                                         | Use a coarser `interval` or a shorter range; a trend over 2,200 buckets returns `422`                                                                                                                                                                                                                                                                                                          | [Analytics](https://docs.concurrence.com/developer-guide/platform-api/safety/analytics#trend-limits)                                                                                                             |
| A voice service that should hand a call it can't carry to a person                                                                                         | Set a fixed `forward_to`; the safe exit transfers only to a fixed destination. It can use `forward_to` when speech recognition fails on a platform-managed call, when the call's setup fails or the agent doesn't answer a turn on either runtime, and on `gpt_realtime` when its realtime session doesn't open, but not when the call's service configuration can't be loaded when it arrives | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#graceful-degradation)                                                                                          |
| A `multilingual` `gpt_realtime` agent whose callers mostly speak a language other than English                                                             | Set `realtime.transcription.language`; when it is unset, the transcriber expects English or Spanish                                                                                                                                                                                                                                                                                            | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#realtime-session-models)                                                                          |
| Any `*.platform.amigo.ai` host, including `api.platform.amigo.ai` and its regional and staging variants                                                    | Those hosts stopped resolving on October 14, 2026. Move to the `platform.api-<slot>.concurrence.com` and `identity.api-<slot>.concurrence.com` hosts for your region, and update allowlists and callback URLs                                                                                                                                                                                  | [Regions and Endpoints](https://docs.concurrence.com/developer-guide/getting-started/regions-and-endpoints)                                                                                                      |
| Platform SDK clients on the default host, or `client.tokens` with `baseUrl` set                                                                            | Upgrade to 0.113.1 or later; older packages default to the retired host. A client that sets `baseUrl` sends `client.tokens` requests there as well, so set `identityBaseUrl` to the matching identity host                                                                                                                                                                                     | [SDK Configuration](https://docs.concurrence.com/developer-guide/platform-api/platform-sdk/configuration#identity-and-agent-connections)                                                                         |
| A streamed-turn parser that rejects unknown frames, or an exhaustive `switch` on SDK stream events                                                         | Accept the `state_transition` and `state` frames that now precede `done`; SDK 0.114.1 yields them                                                                                                                                                                                                                                                                                              | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#streaming-behavior)                                                                                                      |
| `text.agent_message`, `text.tool_started`, or `text.background_result` on the unscoped event stream                                                        | Subscribe with `?conversation_id=`; the unscoped stream no longer carries them                                                                                                                                                                                                                                                                                                                 | [SSE Events](https://docs.concurrence.com/developer-guide/platform-api/conversations/sse-events#scope-to-one-conversation)                                                                                       |
| `GET` or `PUT /v1/{workspace_id}/settings/gap-scanner`, or a runs `channel=text` filter                                                                    | Remove the gap-scanner calls; filter runs by the specific channel (`sms`, `whatsapp`, `email`, `web`, or `imessage`)                                                                                                                                                                                                                                                                           | [Concurrence API](/api-reference/change-logs/amigo-api.md#october-14-2026-runs-channel-filter)                                                                                                                   |
| Graphs that read patient records through integration endpoints after caller verification                                                                   | Built-in record tools now return only the verified caller's own or household record; integration reads are not gated by that check, so test other-person requests on those graphs                                                                                                                                                                                                              | [Caller Verification](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#caller-verification)                                                                                   |
| A scheduling integration endpoint that backs "you're booked" on voice or text                                                                              | Declare `declarations.writes` with its `kind` and `success` rule, and `write_kind` on a skill that calls a `varies` endpoint; an undeclared write never backs a booking or cancellation claim, so on text that reply is replaced by a correction                                                                                                                                               | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations#endpoint-write-declarations)                                                                                               |
| A ticketing, handoff, or callback integration endpoint the agent uses to take a message                                                                    | Declare `message` as the endpoint's `writes.kind`, with its `success` rule, or as `write_kind` on a skill that calls a `varies` endpoint, so on text and platform-managed voice the agent can offer to take a message and confirm it once the call succeeds                                                                                                                                    | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations#endpoint-write-declarations)                                                                                               |
| A text graph that confirms an outcome, or uses `navigate_on_completion`, after an integration call that can answer 4xx or 5xx                              | That call now counts as failed: it reports `succeeded: false`, does not navigate, and backs no claim, so route the failure in the graph                                                                                                                                                                                                                                                        | [Reply Check](https://docs.concurrence.com/developer-guide/platform-api/conversations#reply-check)                                                                                                               |
| Raw SQL against `information_schema`                                                                                                                       | Those queries are rejected; read `customer_data_tables` from the Insights schema operation                                                                                                                                                                                                                                                                                                     | [Insights](https://docs.concurrence.com/developer-guide/platform-api/safety/insights#list-query-schema)                                                                                                          |
| Skill `result_schema` writes, custom `ai_query` metric saves, or production eval `metric_key` values                                                       | Send valid JSON Schema (with a `success`/`failure` `status` enum when structured), declare `ai_labels` or a valid range, and reference an active `ai_query` call-intelligence metric; otherwise the write returns `422`                                                                                                                                                                        | [Concurrence API](/api-reference/change-logs/amigo-api.md#october-14-2026-validation)                                                                                                                            |
| A greeting that already says the caller is talking to an AI or being recorded                                                                              | Every call now opens with the platform's notice; remove the duplicate from the greeting                                                                                                                                                                                                                                                                                                        | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#call-opening)                                                                                                  |
| SDK `client.workspaceDatabase`, `client.desktopSessions`, `client.tasks`, or `client.settings.gapScanner`                                                  | SDK 0.112.0 removes them. The first three called routes the Platform API no longer serves, and no gap scanner has run since October 10, 2026; remove the calls before upgrading                                                                                                                                                                                                                | [SDK Ecosystem](/api-reference/change-logs/sdk-ecosystem.md#october-2026-package-releases)                                                                                                                       |
| Data-source sync, gap-scanner preview or scan, `/health/sync`, or sync-health fields, including SDK `triggerSync()` and `gapScanner.preview()` or `scan()` | These were removed on October 10, 2026, and data sources no longer poll; remove the calls and fields, and upgrade to SDK 0.111.0 or later                                                                                                                                                                                                                                                      | [Concurrence API](/api-reference/change-logs/amigo-api.md#october-10-2026-connector-runner-retired)                                                                                                              |
| Scheduled `outbound_task` outreach or connector write-back                                                                                                 | Nothing dispatches due outbound tasks or delivers connector write-back since October 10, 2026; place calls through the Calls API                                                                                                                                                                                                                                                               | [Calls](https://docs.concurrence.com/developer-guide/platform-api/conversations/calls)                                                                                                                           |
| A `?token=` credential on the observer or test-call WebSocket                                                                                              | Send it in `Sec-WebSocket-Protocol` as `auth, <token>`; a socket without it closes with `4001`                                                                                                                                                                                                                                                                                                 | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#observer-websocket)                                                                                            |
| Dynamic forwarding (`forward_to: null`)                                                                                                                    | List every transfer number in `forwarding.approved_destinations`; with none, the agent is not offered `forward_call`                                                                                                                                                                                                                                                                           | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#call-forwarding)                                                                                  |
| Voice or text sessions that rely on caller-ID or `entity_id` patient context                                                                               | Add `world_confirm_patient_identity` to the identity state; the record loads only after the caller's name and date of birth match one record                                                                                                                                                                                                                                                   | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#caller-verification)                                                                                           |
| Simulations, test caller numbers, or test credentials that exercise real tools                                                                             | Every tool now returns a `dry_run` result in those sessions; test live tool behavior in the Playground                                                                                                                                                                                                                                                                                         | [Simulation Coverage](https://docs.concurrence.com/developer-guide/platform-api/safety/simulation-coverage#write-isolation)                                                                                      |
| Services with no TTS provider or setting                                                                                                                   | Calls now speak ElevenLabs `eleven_v4_turbo`; set `tts_provider` to `cartesia` to keep Cartesia                                                                                                                                                                                                                                                                                                | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#default-tts-model)                                                                                |
| Metric list `offset`, simulation `score_label`, or caller-set `suite:`, `suite_run:`, or `safety:` run tags                                                | Page metrics with `continuation_token`, read the judge `rationale` instead of a score, and let the server set suite and safety tags                                                                                                                                                                                                                                                            | [Concurrence API](/api-reference/change-logs/amigo-api.md#october-12-2026-simulation-contract)                                                                                                                   |
| Integrations on a non-public host, an `http` URL, or an endpoint that redirects                                                                            | Use an HTTPS URL on a public host and its final address; other hosts return `422`, and redirects are not followed                                                                                                                                                                                                                                                                              | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations)                                                                                                                           |
| Empty-message turns after a conversation starts                                                                                                            | Send a message, content, or media; an empty turn is only the kickoff of a conversation with no turns and otherwise returns `422`                                                                                                                                                                                                                                                               | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#send-a-turn)                                                                                                             |
| Engage model preferences on `gpt-5.4`, `gpt-5.5`, `gpt-5.6`, or `gpt-6` with a `reasoning_effort`                                                          | Tool turns now run at `none`; clear an engage effort above `none` or the next service or version-set save returns `422`                                                                                                                                                                                                                                                                        | [Services](https://docs.concurrence.com/developer-guide/platform-api/workspaces/services#tool-turns-and-reasoning-effort)                                                                                        |
| Skills or model preferences pinned to `claude-sonnet-5`, `claude-sonnet-4-6`, `claude-opus-4-8`, or `claude-haiku-4-5`                                     | Skill, service, and version-set writes with those ids return `422` naming the current model of the same tier; send `claude-sonnet-5-5`, `claude-opus-5-5`, or `claude-haiku-5-5` instead                                                                                                                                                                                                       | [Skills](https://docs.concurrence.com/developer-guide/platform-api/workspaces/skills#execution-configuration)                                                                                                    |
| A service `voice_config.tts_model`, including a Forge preset that sets it                                                                                  | The field is ignored; pin a Cartesia model in `tts_config.model`                                                                                                                                                                                                                                                                                                                               | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#default-tts-model)                                                                                |
| `realtime.model` of `gpt-realtime-1.5` or `gpt-realtime-2`, or a realtime transcription model other than `gpt-transcribe`                                  | Writes now return `422`; use `gpt-realtime-2.1` or `gpt-realtime-2.1-mini`, and `gpt-transcribe`                                                                                                                                                                                                                                                                                               | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#realtime-session-models)                                                                          |
| Integration endpoint schemas with a root `anyOf`, `oneOf`, `allOf`, or `$ref`, or arrays without `items`                                                   | Reshape the `input_schema`; writes return `422`, and a stored endpoint with such a schema cannot be called by the agent                                                                                                                                                                                                                                                                        | [Integrations](https://docs.concurrence.com/developer-guide/platform-api/integrations#endpoint-input-schemas)                                                                                                    |
| Retries on function or data-query invoke                                                                                                                   | Do not retry a `422`; fix the arguments. Retry only `503`                                                                                                                                                                                                                                                                                                                                      | [Functions](https://docs.concurrence.com/developer-guide/platform-api/functions#invoke-a-function)                                                                                                               |
| Retries on text turns that fail with `502`                                                                                                                 | A model rejection is non-retryable; fix the configuration or content and send a new turn                                                                                                                                                                                                                                                                                                       | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#send-a-turn)                                                                                                             |
| A hand-written SSE parser or a strict session WebSocket frame validator                                                                                    | Skip SSE comment lines such as `: ping - <timestamp>` and ignore the `ping` event and any other unrecognized session event                                                                                                                                                                                                                                                                     | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#streaming-behavior) and [Sessions](https://docs.concurrence.com/developer-guide/platform-api/platform-api/sessions#ping) |
| ElevenLabs voices, especially ones that rely on `speed`, `style`, or `similarity_boost`                                                                    | Unpinned and retired-model ElevenLabs calls now use `eleven_v4_turbo`, where only `stability` applies; re-test speaking rate and voice character                                                                                                                                                                                                                                               | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#retired-elevenlabs-models)                                                                        |
| Cartesia pins to `sonic-turbo`, `sonic-2`, or another retired model                                                                                        | Those calls now speak Sonic 3.6; replace the pin with a current model                                                                                                                                                                                                                                                                                                                          | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#retired-cartesia-models)                                                                          |
| `POST /v1/{workspace_id}/fhir/build-bundle`                                                                                                                | Build the FHIR Bundle in your own code and submit it to FHIR import                                                                                                                                                                                                                                                                                                                            | [Concurrence API](/api-reference/change-logs/amigo-api.md#october-9-2026-fhir-build-bundle-removed)                                                                                                              |
| A workspace API key used for direct session-event injection                                                                                                | Move to the Platform session injection operation; workspace API keys can't inject session events directly                                                                                                                                                                                                                                                                                      | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#session-event-injection)                                                                                       |
| Voice tools bound to optional context keys                                                                                                                 | A declared key the call did not start with now blocks the bound tool until it is set on the live call; supply it at start, set it live, or remove the binding                                                                                                                                                                                                                                  | [Set Context on a Live Voice Call](https://docs.concurrence.com/developer-guide/guides/live-call-context#how-the-agent-uses-the-value)                                                                           |
| Retrying streamed turns on error                                                                                                                           | Treat the closed-conversation `error` frame (`retryable: false`, `status_code` `409`) as terminal; retry only the `504` reply-timeout frame, and after the non-retryable `500` frame send a new turn instead of replaying the same key                                                                                                                                                         | [Conversations](https://docs.concurrence.com/developer-guide/platform-api/conversations#streaming-behavior)                                                                                                      |
| Outbound call retries                                                                                                                                      | Reuse the same `idempotency_key`; handle `409` for an in-flight or mismatched claim and retry `503` with the same key                                                                                                                                                                                                                                                                          | [Calls](https://docs.concurrence.com/developer-guide/platform-api/conversations/calls#idempotency)                                                                                                               |
| Email use cases with `accepts_cold_inbound`                                                                                                                | Use `inbound_mode`; receiving modes need the inbound MX record verified                                                                                                                                                                                                                                                                                                                        | [Channel Manager](https://docs.concurrence.com/developer-guide/platform-api/conversations/channel-manager#send-and-reconcile-email)                                                                              |
| Scribe EHR writeback with carried-forward fields                                                                                                           | Handle the carried `value` on note reads as chart content; a provider edit to a carried field is now written at finalize instead of the carried value                                                                                                                                                                                                                                          | [Scribe Artifacts](https://docs.concurrence.com/developer-guide/platform-api/scribe/artifacts#ehr-writeback-fields)                                                                                              |
| Scribe session creation                                                                                                                                    | Send the provider's IANA `timezone` on every create                                                                                                                                                                                                                                                                                                                                            | [Scribe Sessions](https://docs.concurrence.com/developer-guide/platform-api/scribe/sessions#create-an-in-person-session)                                                                                         |
| A Cartesia voice that relies on the platform default model                                                                                                 | Calls without a stored model now use Sonic 3.6; pin a model on the service or language entry to keep another                                                                                                                                                                                                                                                                                   | [Voice Configuration](https://docs.concurrence.com/developer-guide/platform-api/workspaces/voice-configuration#default-tts-model)                                                                                |
| Console takeover controls or a Runs Live-tab bookmark                                                                                                      | Use All runs and its Live status filter for browsing; retained API controls require a separate integration and supported runtime                                                                                                                                                                                                                                                               | [Operators](https://docs.concurrence.com/developer-guide/platform-api/conversations/operators)                                                                                                                   |
| Voice forwarding or dialed operator destinations                                                                                                           | Configure `allowed_forwarding_numbers` with the provisioning owner and verify each destination; an empty list denies forwarding                                                                                                                                                                                                                                                                | [Channel Manager](https://docs.concurrence.com/developer-guide/platform-api/conversations/channel-manager)                                                                                                       |
| Scribe note edits or autosave                                                                                                                              | Save the complete structured note with `base_version`, reconcile conflicts, and finalize the reviewed version                                                                                                                                                                                                                                                                                  | [Scribe Artifacts](https://docs.concurrence.com/developer-guide/platform-api/scribe/artifacts)                                                                                                                   |
| Retired transcript verification fields                                                                                                                     | Remove accuracy/verified-transcript dependencies and verify available transcript evidence                                                                                                                                                                                                                                                                                                      | [Voice Agent](https://docs.concurrence.com/developer-guide/platform-api/conversations/voice-agent#layer-5-post-call-intelligence)                                                                                |
| Managed channel provisioning through old workspace routes                                                                                                  | Arrange managed provisioning separately, then use the public service-binding contract                                                                                                                                                                                                                                                                                                          | [Use Cases and Bindings](https://docs.concurrence.com/developer-guide/platform-api/workspaces/use-cases)                                                                                                         |
| Shareable intake upload links or the retired external HMAC upload path                                                                                     | Use the supported authenticated dataset-intake workflow; confirm processing and queryability separately                                                                                                                                                                                                                                                                                        | [Customer Data Intake](https://docs.concurrence.com/developer-guide/platform-api/data-world-model/intake)                                                                                                        |
| Standalone ringless voicemail                                                                                                                              | Remove that retired workflow; ordinary outbound-call voicemail handling is a separate voice capability                                                                                                                                                                                                                                                                                         | [Calls](https://docs.concurrence.com/developer-guide/platform-api/conversations/calls)                                                                                                                           |
| A text answer treated as complete at acknowledgement                                                                                                       | Handle pending work and the supported background-delivery receipt protocol                                                                                                                                                                                                                                                                                                                     | [Serve an Agent From a Web App](https://docs.concurrence.com/developer-guide/platform-api/conversations/serve-agent-from-web-app)                                                                                |
| Scribe through generic text-session or login-session assumptions                                                                                           | Use its deployment base, provider access, session mode, and artifact lifecycle                                                                                                                                                                                                                                                                                                                 | [Scribe](https://docs.concurrence.com/developer-guide/platform-api/scribe)                                                                                                                                       |
| SMS delivery inferred from conversation creation or an opt-in send record                                                                                  | Inspect consent/suppression and delivery evidence independently                                                                                                                                                                                                                                                                                                                                | [SMS](https://docs.concurrence.com/developer-guide/platform-api/conversations/sms)                                                                                                                               |
| Mutable workspace environment or region settings                                                                                                           | Select the appropriate regional workspace and use the current workspace contract; retired fields do not move a deployment                                                                                                                                                                                                                                                                      | [Workspaces](https://docs.concurrence.com/developer-guide/platform-api/workspaces)                                                                                                                               |

Use the relevant endpoint's current schema for exact requests, responses, and deprecation metadata. Do not infer one deadline or replacement operation from a historical feature title.

Also check the following changes where they apply:

* **SDK upgrades:** review the [Classic 2.0.0 and Platform 0.108.0 compatibility changes](/api-reference/change-logs/sdk-ecosystem.md#september-2026-compatibility-releases) and the [October package releases](/api-reference/change-logs/sdk-ecosystem.md#october-2026-package-releases). Classic generated fields and model identifiers changed; Platform fleet status no longer accepts a selector; Platform 0.109.1 removes `service_id` from outbound call requests; Platform 0.111.0 removes the data-source sync and gap-scanner preview and scan methods; Platform 0.113.1 moves the default hosts to `concurrence.com` and adds `identityBaseUrl`; Scribe moved to `@concurrence-hq/scribe-typescript-sdk`, and its 1.0.0 requires a session `timezone`.
* **Conversation context:** coordinate the service's `accepted_context` with callers that create conversations and the selected Context Graph's bindings. Service updates use `PUT`. Matching names use `context_bindings`; `context_binding_aliases` maps a tool parameter to a differently named context key. Review [Conversation Context](https://docs.concurrence.com/developer-guide/guides/conversation-context) for companion-skill inputs, restored text sessions, SDK type coverage, and the distinction between `channel-id` and verified identity.
* **Usage and cost:** replace removed cost-to-serve reads with the [current reports](https://docs.concurrence.com/developer-guide/platform-api/platform-api/cost-to-serve). Preserve their different access requirements and unavailable-data handling.
* **Voice records:** treat `call_sid` values as opaque strings, including UUID-shaped values. Check retained Realtime history separately from live events.
* **Intake-source deletion:** use the [public contract](https://docs.concurrence.com/developer-guide/platform-api/data-world-model/intake-sources#remove-a-source-registration). Removing a source registration retains imported data.

## 3. Validate the Change

1. Pin the intended package and record the previous version.
2. Compile the affected client code and compare the operations you use with their current contracts.
3. Rerun representative success, access-denial, pending-work, interrupted-request, and cleanup cases on a test deployment.
4. Verify configuration selection and recovery. Decide how to reconcile ambiguous external outcomes and what observations would stop or reverse the rollout.

The [First Verified Conversation](https://docs.concurrence.com/developer-guide/guides/first-verified-conversation) provides a pinned example and fixture checks for one Platform workflow. Passing those local checks does not establish compatibility for your full application or provisioned channel.

A package downgrade or configuration rollback does not undo a target-system action. Include those effects in the recovery plan before production rollout.

## Find the Historical Detail

* [Concurrence API](/api-reference/change-logs/amigo-api.md) retains recent entries, an archive index, and forwarding headings for older bookmarks.
* [Web Platform](/api-reference/change-logs/web-platform.md) does the same for Developer Console and Admin Portal history.
* [SDK Ecosystem](/api-reference/change-logs/sdk-ecosystem.md) tracks package-specific changes.
* [Agent Forge CLI](/api-reference/change-logs/agent-forge.md) tracks CLI changes independently.

When a historical entry and current behavior appear inconsistent, preserve the history and report the discrepancy with the version, operation, and observed evidence. Use [Troubleshooting](https://docs.concurrence.com/developer-guide/guides/troubleshooting) to identify the failing boundary.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.concurrence.com/api-reference/change-logs/upgrade-guide.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
