> ## Documentation Index
> Fetch the complete documentation index at: https://docs.social-api.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Base URL: https://api.social-api.ai/v1. Send your API key in the Authorization header: Authorization: Bearer <your API key>.
> Every error response from /v1 is JSON: { "error": { "code", "message", "meta" (optional) }, "request_id" }. Branch on error.code; use error.message only for logs.
> A 429 response carries a Retry-After header, in seconds, when the limit has a known wait. Authenticated responses can carry X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset for the per-minute request budget your SocialAPI account shares across every API key (see /guides/rate-limits).
> Paginated list endpoints return next_cursor, at the top level or inside pagination (see /guides/pagination). Pass it as the cursor query parameter to get the next page. An absent or empty next_cursor means you have the last page.
> Treat every ID as an opaque string: do not parse it or assume a format.
> Support differs by platform and by operation. Check /platforms/overview before assuming an operation works on a platform. An unsupported operation returns 501 with error.code resource.not_supported.

# Replace a Google Business Profile location's food menus

> Replaces every menu on the location with the menus you send, so send the full list each time. An empty menus list removes all menus. Every menu, section, dish and option needs at least one label with a display_name (up to 140 characters, description up to 1000), every menu needs a section, every section needs a dish, and every dish needs a price. Values such as cuisines, allergen, dietary_restriction and preparation_methods take Google's enum names, for example ITALIAN, PEANUT, VEGAN or GRILLED. media_keys reference photos already on the location's profile. Only locations whose details report can_have_food_menus=true support menus, so check it first: Google refuses menus on any other location.



## OpenAPI

````yaml /api-reference/openapi.json put /platforms/google/accounts/{id}/food-menus
openapi: 3.0.0
info:
  description: >-
    Unified social media inbox API. Read and respond to comments, DMs, reviews,
    and mentions across Instagram, Facebook, Threads, Google Business Profile,
    TikTok, LinkedIn, and YouTube through a single REST API. X/Twitter and
    Trustpilot coming soon.
  title: SocialAPI.AI
  contact:
    name: SocialAPI.AI Support
    email: support@social-api.ai
  license:
    name: MIT
  version: '1.0'
servers:
  - url: https://api.social-api.ai/v1
security: []
paths:
  /platforms/google/accounts/{id}/food-menus:
    put:
      tags:
        - Google
      summary: Replace a Google Business Profile location's food menus
      description: >-
        Replaces every menu on the location with the menus you send, so send the
        full list each time. An empty menus list removes all menus. Every menu,
        section, dish and option needs at least one label with a display_name
        (up to 140 characters, description up to 1000), every menu needs a
        section, every section needs a dish, and every dish needs a price.
        Values such as cuisines, allergen, dietary_restriction and
        preparation_methods take Google's enum names, for example ITALIAN,
        PEANUT, VEGAN or GRILLED. media_keys reference photos already on the
        location's profile. Only locations whose details report
        can_have_food_menus=true support menus, so check it first: Google
        refuses menus on any other location.
      parameters:
        - description: Connected account ID
          name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenus
        description: The complete set of menus
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.GoogleFoodMenusResponse'
        '400':
          description: A menu, section, dish or label breaks the rules above
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '404':
          description: Unknown account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '429':
          description: Google's 10 edits per minute per profile exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '502':
          description: Google rejected a value
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    social-api_ai_core_api_connectors_base.GBPFoodMenus:
      type: object
      properties:
        menus:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenu
    api_endpoints.GoogleFoodMenusResponse:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenus
    api_endpoints.ErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/api_endpoints.ErrorBody'
        request_id:
          description: >-
            RequestID matches the X-Request-ID response header. Include it when
            contacting support.
          type: string
          example: 01HZ9X3Q4R5M6N7P8V2K0W1J
    social-api_ai_core_api_connectors_base.GBPFoodMenu:
      type: object
      properties:
        cuisines:
          description: Cuisines are Google's Cuisine values, for example ITALIAN or PIZZA.
          type: array
          items:
            type: string
        labels:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
        sections:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenuSection
        source_url:
          type: string
          example: https://joes.example/menu
    api_endpoints.ErrorBody:
      type: object
      properties:
        code:
          type: string
          example: resource.not_found
        message:
          type: string
          example: Account not found
        meta:
          type: object
          additionalProperties: {}
    social-api_ai_core_api_connectors_base.GBPMenuLabel:
      type: object
      properties:
        description:
          type: string
          example: Tomato, mozzarella, basil
        display_name:
          type: string
          example: Margherita
        language_code:
          description: LanguageCode is a BCP 47 code. English is assumed when absent.
          type: string
          example: en
    social-api_ai_core_api_connectors_base.GBPFoodMenuSection:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenuItem
        labels:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
    social-api_ai_core_api_connectors_base.GBPFoodMenuItem:
      type: object
      properties:
        attributes:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenuItemAttribute
        labels:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
        options:
          description: >-
            Options are variants of the dish (sizes, fillings). An option's
            unset

            attributes are taken from the dish.
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenuItemOption
    social-api_ai_core_api_connectors_base.GBPFoodMenuItemAttribute:
      type: object
      properties:
        allergen:
          description: >-
            Allergen lists Google's Allergen values, for example DAIRY or
            PEANUT.
          type: array
          items:
            type: string
        dietary_restriction:
          description: >-
            DietaryRestriction lists Google's values, for example VEGAN or
            HALAL.
          type: array
          items:
            type: string
        ingredients:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuIngredient
        media_keys:
          description: >-
            MediaKeys reference photos of the dish from the location's photo
            gallery.
          type: array
          items:
            type: string
        nutrition_facts:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFacts
        portion_size:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuPortionSize
        preparation_methods:
          type: array
          items:
            type: string
        price:
          description: >-
            Price is required on a dish. On an option it may be omitted to keep
            the

            dish's price.
          allOf:
            - $ref: >-
                #/components/schemas/social-api_ai_core_api_connectors_base.GBPMoney
        serves_num_people:
          type: integer
        spiciness:
          description: Spiciness is MILD, MEDIUM or HOT.
          type: string
    social-api_ai_core_api_connectors_base.GBPFoodMenuItemOption:
      type: object
      properties:
        attributes:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPFoodMenuItemAttribute
        labels:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
    social-api_ai_core_api_connectors_base.GBPMenuIngredient:
      type: object
      properties:
        labels:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
    social-api_ai_core_api_connectors_base.GBPNutritionFacts:
      type: object
      properties:
        calories:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPCaloriesFact
        cholesterol:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFact
        protein:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFact
        sodium:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFact
        total_carbohydrate:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFact
        total_fat:
          $ref: >-
            #/components/schemas/social-api_ai_core_api_connectors_base.GBPNutritionFact
    social-api_ai_core_api_connectors_base.GBPMenuPortionSize:
      type: object
      properties:
        quantity:
          type: integer
        unit:
          type: array
          items:
            $ref: >-
              #/components/schemas/social-api_ai_core_api_connectors_base.GBPMenuLabel
    social-api_ai_core_api_connectors_base.GBPMoney:
      type: object
      properties:
        currency_code:
          type: string
          example: EUR
        nanos:
          description: >-
            Nanos is the fractional part of the price, in billionths. Zero is a
            real

            value, not an absent one.
          type: integer
        units:
          type: string
          example: '80'
    social-api_ai_core_api_connectors_base.GBPCaloriesFact:
      type: object
      properties:
        lower_amount:
          type: integer
        unit:
          type: string
          example: CALORIE
        upper_amount:
          type: integer
    social-api_ai_core_api_connectors_base.GBPNutritionFact:
      type: object
      properties:
        lower_amount:
          type: number
        unit:
          type: string
          example: GRAM
        upper_amount:
          type: number
  securitySchemes:
    BearerAuth:
      description: >-
        Prefix your API key with "Bearer ". Example: `Authorization: Bearer
        sapi_key_...`
      type: apiKey
      name: Authorization
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.