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

# Resolve Url Conflict

> Resolve a URL conflict for a brand.

Use this when a brand has url_needs_review=True because the
LLM-inferred URL and web search URL differed.

This will:
- Set the chosen URL as the official URL
- Mark the brand as verified
- Clear the url_needs_review flag



## OpenAPI

````yaml /openapi/merchantops-public.json post /api/brands/{key}/resolve-url
openapi: 3.1.0
info:
  description: >-
    Public API for the MerchantOps product catalog, pricing, and publishing
    surface.
  title: MerchantOps API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.merchantops.ai
security: []
paths:
  /api/brands/{key}/resolve-url:
    post:
      tags:
        - Brands
      summary: Resolve Url Conflict
      description: |-
        Resolve a URL conflict for a brand.

        Use this when a brand has url_needs_review=True because the
        LLM-inferred URL and web search URL differed.

        This will:
        - Set the chosen URL as the official URL
        - Mark the brand as verified
        - Clear the url_needs_review flag
      operationId: resolve_url_conflict
      parameters:
        - in: path
          name: key
          required: true
          schema:
            title: Key
            type: string
        - in: header
          name: authorization
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
        - in: header
          name: X-Organization-ID
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Organization-Id
        - in: cookie
          name: stytch_session
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Stytch Session
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveURLRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandResponse'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  schemas:
    ResolveURLRequest:
      description: Request model for resolving a URL conflict.
      properties:
        country:
          default: us
          description: Country code for this URL
          title: Country
          type: string
        url:
          description: The chosen URL
          title: Url
          type: string
      required:
        - url
      title: ResolveURLRequest
      type: object
    BrandResponse:
      description: Response model for a single Brand.
      properties:
        aliases:
          description: Alternative names
          items:
            type: string
          title: Aliases
          type: array
        createdAt:
          anyOf:
            - type: string
            - type: 'null'
          description: Creation timestamp
          title: Createdat
        createdBy:
          anyOf:
            - type: string
            - type: 'null'
          description: User who created this
          title: Createdby
        domain_patterns:
          description: Domain patterns for matching
          items:
            type: string
          title: Domain Patterns
          type: array
        id:
          description: MongoDB ObjectId as string
          title: Id
          type: string
        is_verified:
          default: false
          description: Whether brand is verified
          title: Is Verified
          type: boolean
        key:
          description: Normalized brand key
          title: Key
          type: string
        lastModifiedAt:
          anyOf:
            - type: string
            - type: 'null'
          description: Last modification timestamp
          title: Lastmodifiedat
        lastModifiedBy:
          anyOf:
            - type: string
            - type: 'null'
          description: User who last modified this
          title: Lastmodifiedby
        llm_inferred_url:
          anyOf:
            - type: string
            - type: 'null'
          description: URL from LLM inference
          title: Llm Inferred Url
        logo_url:
          anyOf:
            - type: string
            - type: 'null'
          description: Brand logo URL
          title: Logo Url
        name:
          description: Official brand name
          title: Name
          type: string
        scrape_consecutive_failures:
          default: 0
          description: Failures since last success
          title: Scrape Consecutive Failures
          type: integer
        scrape_disabled_until:
          anyOf:
            - type: string
            - type: 'null'
          description: Cooldown end when mode=disabled
          title: Scrape Disabled Until
        scrape_last_failure_at:
          anyOf:
            - type: string
            - type: 'null'
          description: Most recent failure timestamp
          title: Scrape Last Failure At
        scrape_last_failure_reason:
          anyOf:
            - type: string
            - type: 'null'
          description: Reason for most recent failure
          title: Scrape Last Failure Reason
        scrape_mode:
          default: auto
          description: auto | enhanced | disabled
          title: Scrape Mode
          type: string
        scrape_mode_set_at:
          anyOf:
            - type: string
            - type: 'null'
          description: When scrape_mode last changed
          title: Scrape Mode Set At
        scrape_mode_set_by:
          anyOf:
            - type: string
            - type: 'null'
          description: Who last changed scrape_mode
          title: Scrape Mode Set By
        source:
          anyOf:
            - type: string
            - type: 'null'
          description: How brand was added
          title: Source
        url_needs_review:
          default: false
          description: Whether URLs need review
          title: Url Needs Review
          type: boolean
        urls:
          description: Country-specific URLs
          items:
            $ref: '#/components/schemas/BrandURLResponse'
          title: Urls
          type: array
        web_search_url:
          anyOf:
            - type: string
            - type: 'null'
          description: URL from web search
          title: Web Search Url
      required:
        - id
        - key
        - name
      title: BrandResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    BrandURLResponse:
      description: Response model for a brand URL.
      properties:
        country:
          description: ISO 2-letter country code
          title: Country
          type: string
        url:
          description: Brand website URL
          title: Url
          type: string
      required:
        - country
        - url
      title: BrandURLResponse
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object

````