> ## Documentation Index
> Fetch the complete documentation index at: https://developers.partoo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# API Changelogs

> These release notes list changes to Partoo.

<Note>
  **📅 Deprecation Policy**

  Each major change (deprecated section) includes a 6-month grace period before it takes effect.

  * The date on the left shows when it was announced.
  * The date in the yellow box shows when it will take effect.

  👉  You can find the full list of API breaking changes on this [page](/changelogs/api/breaking-changes).
</Note>

<Update label="29th April 2026" description="Google Lodging attributes endpoints">
  ### Added

  #### Google Lodging attributes endpoints

  You can now retrieve Google Lodging attribute definitions and manage lodging attribute values for businesses whose Google location can operate Lodging data.

  Affected endpoints:

  * `GET /v2/lodging/list`
  * `GET /v2/business/{business_id}/lodging`
  * `POST /v2/business/{business_id}/lodging`

  The business endpoints use the existing business id path parameter, including the `c-{code}` format for supported users. Updates are partial: only lodging attributes sent in the request body are changed.
</Update>

<Update label="15th April 2026" description="New Diffusion Errors endpoint">
  ### Added

  #### New Diffusion Errors endpoint

  A new endpoint for retrieving diffusion errors grouped by publisher is now available.

  * [`POST /diffusion_errors/{business_id}`](/api-reference/presence/get-diffusion-errors-for-a-business) — Get diffusion errors for a business

  This endpoint provides improved error organization under the Diffusion domain and better feature control with proper authorization checks.

  **Note:** The old `POST /publisher_errors/{business_id}` endpoint is deprecated and will be removed on October 15, 2026. Please [migrate to the new endpoint](/changelogs/api/breaking-changes#deprecation-of-publisher_errors-endpoint).
</Update>

<Update label="25th March 2026" description="Custom headers support for webhooks">
  ### Added

  #### Custom headers for webhook configurations

  You can now define custom HTTP headers to be forwarded with every webhook request, when creating or updating a webhook.

  Affected endpoints:

  * `POST /v2/webhooks`
  * `PATCH /v2/webhooks/{webhook_id}`
</Update>

<Update label="21th January 2026" description="Branded dimension and filter for presence analytics keywords">
  ### Added

  #### Branded dimension and filter for presence analytics keywords

  You can now distinguish between branded and discovery keywords in your Google Business Profile analytics.

  **New dimension:**

  * `branded` - Shows whether keywords are associated with your brand or are discovery keywords

  **New filter:**

  * `branded=true` - Returns only branded keywords (e.g., "Castorama", "Casto")
  * `branded=false` - Returns only discovery keywords (e.g., "bricolage", "magasin outillage")

  **Affected endpoints:**

  * `GET /v2/presence_analytics/keywords`

  **Example usage:**

  ```bash theme={null}
  # Get all keywords with branded dimension
  GET /v2/presence_analytics/keywords?dimensions=month,keyword,branded&metrics=count,threshold

  # Filter only branded keywords
  GET /v2/presence_analytics/keywords?dimensions=month,keyword,branded&branded=true&metrics=count,threshold

  # Filter only discovery keywords
  GET /v2/presence_analytics/keywords?dimensions=month,keyword,branded&branded=false&metrics=count,threshold
  ```

  **Response format:**

  ```json theme={null}
  {
    "keywords": [
      {
        "branded": "branded",
        "keyword": "foo",
        "count": 9001,
        "date": "2022-03-01",
        "bucket": "month"
      },
      {
        "branded": "discovery",
        "keyword": "bar",
        "threshold": 42,
        "date": "2022-03-01",
        "bucket": "month"
      }
    ]
  }
  ```

  <Info>
    This enhancement helps businesses analyze their brand visibility versus generic search performance in Google Business Profile.
  </Info>
</Update>

<Update label="1st December 2025" description="Release of Custom Roles">
  ### Deprecated

  <Warning>
    Update your integrations to remove dependencies on these endpoints before 15th July 2026.
  </Warning>

  If you are currently using any of the below endpoints or parameters to limit sidebar visibility for users, please migrate to the new Custom Roles system before the specified deprecation date.

  #### Deprecated endpoints

  * [`GET /org/{org_id}/business_fields`](/api-reference/business-fields/business-fields-configuration-for-an-organization) — organization-level business fields (deprecated)
  * [`GET /business/{business_id}/business_fields`](/api-reference/business-fields/business-fields-configuration-for-a-business) — business-level business fields (deprecated)

  #### Deprecated user parameters

  * `sidebar_pages` - deprecated in favor of the new Custom Roles and the `permissions` model. Seen in:
    * [`POST /v2/user`](/api-reference/users/create-user) (create user)
    * [`POST /v2/user/{user_id}`](/api-reference/users/update-user) (update user)

  ### Added

  #### New Custom Roles endpoints

  You can now manage Custom Roles for your organization using the following endpoints:

  * [`GET /v2/custom_role`](/api-reference/custom-roles/list-custom-roles) — List Custom Roles
  * [`POST /v2/custom_role`](/api-reference/custom-roles/create-custom-role) — Create Custom Role
  * [`GET /v2/custom_role/{custom_role_api_id}`](/api-reference/custom-roles/get-custom-role) — Get Custom Role detail
  * [`POST /v2/custom_role/{custom_role_api_id}`](/api-reference/custom-roles/update-custom-role) — Update Custom Role
  * [`DELETE /v2/custom_role/{custom_role_api_id}`](/api-reference/custom-roles/delete-custom-role) — Delete Custom Role
  * [`POST /v2/custom_role/duplicate`](/api-reference/custom-roles/duplicate-custom-role) — Duplicate an existing Custom Role
  * [`GET /v2/permissions`](/api-reference/custom-roles/get-permissions) — List available permissions (used when building custom role permissions)

  ### Updated Endpoints

  In addition, user endpoints now accept a `custom_role` parameter allowing assignment of a Custom Role by its `api_id`:

  * `custom_role` (string) - API identifier of the custom role to assign to a user. Seen in:
    * [`POST /v2/user`](/api-reference/users/create-user) (create user)
    * [`POST /v2/user/{user_id}`](/api-reference/users/update-user) (update user)
</Update>

<Update label="15th April 2026" description="Business subscription management endpoints changes">
  <Info>
    **⏰ This is a future deprecation notice**
    These changes will take effect on **15th April 2026**. You have time to plan and update your integrations.
  </Info>

  ### Deprecated

  #### Business subscription management endpoints

  You are affected if:

  * You are a provider

  The following endpoints are deprecated:

  * `GET /v2/business/{business_id}/subscription`
  * `POST /v2/business/{business_id}/subscribe`
  * `POST /v2/business/{business_id}/unsubscribe`

  Use these endpoints instead:

  * `GET /v2/business/{business_id}/plans`
  * `POST /v2/business/{business_id}/plans`
</Update>

<Warning>
  Update your integrations to remove dependencies on these endpoints before 15th April 2026.
</Warning>

<Update label="15th January 2026" description="User fields and image upload changes">
  <Info>
    **⏰ This is a future deprecation notice**
    These changes will take effect on **15th January 2026**. You have time to plan and update your integrations.
  </Info>
</Update>

<Update label="15th July 2025" description="User fields and image upload changes">
  ### Deprecated

  #### `phone` and `keywords` fields for users

  <Warning>
    Please note that as of [January 15, 2026](/changelogs/api/breaking-changes#removing-phone-and-keywords-fields-from-user-endpoints), these fields will be removed.
  </Warning>

  The `phone` and `keywords` fields in all user-related endpoints are now deprecated and will be permanently removed.

  #### Image message sending via direct upload

  <Warning>
    Please note that as of [January 15, 2026](/changelogs/api/breaking-changes#image-message-sending-via-direct-upload), this change will be applied.
  </Warning>

  Image messages can no longer be sent using direct file uploads (`form-data`) through:

  `POST /v2/messages`

  You are affected if:

  * You send messages via the message API on behalf of a business
  * You upload image messages via direct file upload

  <Tip>
    Use public URLs to upload images instead. This change harmonizes how media is handled across the API.
  </Tip>
</Update>

<Update label="30th June 2025" description="Support for custom messaging channels">
  ### Added

  #### Support for custom channels in messaging

  You can now send **Text** messages through custom-defined channels via:

  `POST /v2/custom-channels/{channel_id}/messages`

  Impacted endpoints:

  * `GET /v2/conversations`
  * `GET /v2/conversations/{conversation_id}`
  * `EVENT message_created`
  * `EVENT message_updated`
</Update>

<Update label="22nd April 2025" description="Media support added to messaging">
  ### Added

  #### Media messaging support

  You can now send and receive:

  * **Audio**
  * **Video**
  * **Document**

  <Info>
    Not all channels support all media types.
  </Info>

  | Channel   | Image | Video | Audio | Document |
  | --------- | :---: | :---: | :---: | :------: |
  | Facebook  |   ✅   |   ✅   |   ✅   |     ✅    |
  | Instagram |   ✅   |   ✅   |   ✅   |     ❌    |
  | SMS       |   ❌   |   ❌   |   ❌   |     ❌    |
  | WhatsApp  |   ✅   |   ✅   |   ✅   |     ✅    |

  Affected endpoints:

  * `GET /v2/conversations`
  * `GET /v2/conversations/{conversation_id}`
  * `GET /v2/messages`
  * `POST /v2/messages`
  * `EVENT message_created`
  * `EVENT message_updated`
</Update>

<Update label="14th February 2025" description="Webhook configuration and analytics changes">
  ### Added

  #### Webhook configuration API

  You can now configure webhooks directly from the API or in **Settings > Integrations**.

  ### Changed

  #### Content-Type enforcement

  All `POST`, `PATCH`, and `PUT` requests now require a valid `Content-Type` header. Default: `application/json`.

  <Warning>
    This is a breaking change following webserver upgrades. Review your client integrations.
  </Warning>

  ### Removed

  #### `category_gmb_id` and presence analytics

  * `category_gmb_id` is removed. Use `category_gmb_name` instead.
  * Presence analytics endpoints are removed. Use **Profile metrics** and **Profile keywords** endpoints instead.
</Update>

<Update label="15th January 2025" description="Review analytics V1 deprecation and feature migration">
  ### Deprecated

  #### Review analytics V1 API

  The following endpoints are deprecated:

  * `GET /v2/reviews/stats`
  * `GET /v2/reviews/qualitative-evolution`
  * `GET /v2/reviews/quantitative-evolution`

  Use `GET /v2/review_analytics/metrics` instead.

  <Warning>
    The properties `treated`, `not_treated`, and `answer_time` are no longer available.
  </Warning>

  #### `products` in favor of `features`

  We are introducing a more granular feature-based permission system across organizations, businesses, and users.

  ### Changed

  #### Mappings for review analytics

  * `/v2/reviews/stats` → `?metrics=average_rating,rating_distribution,reply_time,reviews_count`
  * `/v2/reviews/quantitative-evolution` → `?dimensions={day|week|month|year}&metrics=reviews_count`
  * `/v2/reviews/qualitative-evolution` → `?dimensions={day|week|month|year}&metrics=reviews_count,average_rating`

  #### New `features` field usage

  ##### Organization

  * Use `org_features` to get the active features
  * Use `features` to list all available features

  ##### Business

  * New field: `features`
  * Searchable using `features__in` and `features__notin`

  ##### User

  * `sidebar_products` → `sidebar_pages`

  <Warning>
    During the transition, updating `sidebar_products` may auto-assign features like `posts`, `bulk_modification`, `diffusion`, or `presence_analytics` depending on organizational access.
  </Warning>

  #### Deprecated fields

  * `has_google_post`
  * `display_google_post`
  * `sidebar_products`
</Update>

<Update label="15th January 2025" description="Validation and deprecations for GmbServices and analytics">
  ### Changed

  #### Content-Type validation enforced

  All `POST`, `PATCH`, and `PUT` requests must now specify a valid `Content-Type`.

  <Warning>
    Requests without an appropriate `Content-Type` header may be rejected.
  </Warning>

  ### Removed

  #### GmbServices and presence analytics

  * `category_gmb_id` fully removed from GmbServices
  * Deprecated presence analytics endpoints fully removed
</Update>

<Update label="15th October 2024" description="Business code usage and REPEATABLE_URL deprecation">
  ### Added

  #### Store Code identification enabled

  Use business codes instead of IDs in endpoints. Example:

  ```bash theme={null}
  curl -H "x-APIKey: ${API_KEY}" --json '{"address_full": "221b Baker Street"}' \
  https://api.partoo.co/v2/business/c-LON-HQ
  ```

  <Info>
    Use the `/c-` prefix to denote a business code path.
  </Info>

  ### Removed

  #### `REPEATABLE_URL` no longer supported

  Replace with Place Action Links:

  * `GET /business/{business_id}/place_action_links`
  * `POST /business/{business_id}/place_action_links`
</Update>

<Update label="15th July 2024" description="Nullable addresses and DELETE method improvements">
  ### Changed

  #### Nullable business address fields

  Fields like `address`, `address_full`, `zipcode`, `city`, `lat`, and `long` can return `null`.

  #### DELETE endpoint body parameters deprecated

  * `force` → query param for `DELETE /organization`
  * `forced_update` → `force` in `DELETE /custom-field`

  <Warning>
    All deprecated DELETE body params will be removed by **15th January 2025**.
  </Warning>

  #### `forced_update` renamed to `force` in PUT

  In `PUT /custom-field`, parameter `forced_update` is now `force`.

  ### Security

  #### Webhooks now signed

  Webhook requests are signed.

  <Tip>
    See **Webhook Security** for verifying signatures.
  </Tip>
</Update>

<Update label="24th June 2024" description="Swagger file compliance update">
  ### Fixed

  #### Swagger corrections 🎉

  Updated Swagger documentation to OpenAPI 3.0 standards.

  <Check>
    No API changes were made—your current integrations continue to work.
  </Check>

  <Tip>
    You can now use auto-generation tools more effectively.
  </Tip>
</Update>

<Update label="29th February 2024" description="Publisher error reporting support">
  ### Added

  #### Publisher Errors Reporting Endpoint

  You can now report and view publisher-specific errors during business edits.

  <Info>
    This allows better diagnostics and corrections.
  </Info>
</Update>

<Update label="15th July 2023" description="Rate limiting and presence analytics deprecation">
  ### Security

  #### Rate limiting enabled

  Limit: **300 requests per minute** per organization.

  <Warning>
    Integrations exceeding limits may be throttled.
  </Warning>

  ### Deprecated

  #### Presence analytics endpoints

  * `GET /v2/presence_analytics`
  * `GET /v2/presence_analytics/export`

  ### Removed

  #### Google Posts insights

  Google views and clicks data are no longer available.

  <Info>
    Facebook insights still available via `GET /v2/posts`.
  </Info>
</Update>

<Update label="17th April 2023" description="Messaging APIs released">
  ### Added

  #### Messaging APIs released

  Support for:

  * Conversations
  * Messaging settings
  * Messages
  * Webhooks
</Update>

<Update label="15th April 2023" description="Google Post and GmbServices changes">
  ### Removed

  #### Google Post endpoints removed

  Deprecated in favor of unified `/posts`.

  ### Changed

  #### `category_gmb_id` fields replaced

  With `category_gmb_name` in:

  * `GET /v2/services/suggestions`
  * `GET /v2/business/{business_id}/services`
  * `POST /v2/business/{business_id}/free_form_services`
  * `POST /v2/business/{business_id}/structured_services`
</Update>

<Update label="15th October 2022" description="Category structure updates and endpoint cleanup">
  ### Deprecated

  #### Categories endpoint

  * `GET /v2/category/{category_id}` → replaced by `GET /v2/categories/{category_id}`

  ### Changed

  #### Category enhancements

  * `with_names` for translated names
  * `with_countries` for available countries

  ### Removed

  #### Obsolete integration endpoints

  * `GET /v2/business/{business_id}/integration_status`
  * `GET /v2/business/{business_id}/partner_urls`
  * `GET /v2/publisher_states/business_info`
  * `GET /v2/publisher_states/businesses_info`

  Use: `GET /v2/publisher_states`

  #### `template_id` removed from review booster

  * Affects: `POST /v2/review_booster/send_invitation`

  <Check>
    Templates in use are not affected.
  </Check>
</Update>

<Update label="15th July 2022" description="Address fields and ordering standardization">
  ### Changed

  #### Unified search result ordering

  All search endpoints now support `order_by`.

  #### Address field cleanup

  `address_details` deprecated in favor of `address_full`.

  <Warning>
    Do not use `address_full` and `address_details` together.
  </Warning>
</Update>

<Update label="15th January 2022" description="Pagination upgrades and sandbox API change">
  ### Added

  #### Pagination support

  Use `per_page` in:

  * `GET /v2/reviews`
  * `GET /v2/business/search`
  * `GET /v2/user/search`

  ### Changed

  #### Sandbox API base URL

  New: `api.sandbox.partoo.co`

  Old: `sandbox.api.partoo.co` (deprecated)

  ### Deprecated

  #### Obsolete endpoints

  * `GET /v2/GET street types`
  * `GET /v2/GET number supplements`

  ### Changed

  #### Category endpoint updates

  * `id` is now an integer
  * `gmb_id` added to response
</Update>

<Update label="14th December 2021" description="Legacy category ID deprecation">
  ### Deprecated

  #### Old category ID format

  Use `gcid:climbing_gym` instead of legacy string IDs.

  <Tip>
    Use `/v2/categories` to fetch valid categories.
  </Tip>
</Update>

<Update label="15th July 2021" description="Authorization and product deprecations">
  ### Removed

  #### Categories search endpoint

  Use: `GET /v2/categories`

  ### Deprecated

  #### API key authorization routes

  * `POST /v2/authorize`
  * `GET /v2/authorize/list`
  * `POST /v2/authorize/revoke`

  Use: `POST /v2/connection/generate_token`

  #### Business fields

  * `clean_name`
  * `video`
  * `siret`
  * `news`

  <Check>
    Field `country` now uses a standardized code format.
  </Check>
</Update>
