> ## Documentation Index
> Fetch the complete documentation index at: https://syncupai-robbalian-cleanup-deprecated-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrich a single place synchronously



## OpenAPI

````yaml /openapi-v1.json post /place_enrichment/enrich
openapi: 3.1.0
info:
  title: Reprompt Place Enrichment API
  description: >

    ## Batch Processing Guide


    The `/place_enrichment/batches` endpoint allows you to submit multiple
    places in a single batch for attribute enrichment. 

    The batch will be processed asynchronously, and you can track its status
    using the returned batch ID.



    #### Typical workflow:

    1. Prepare your batch payload with:
       - A unique batch name for identification
       - List of places with their IDs and input data
       - Optional attribute set specification
    2. Submit the batch using the POST `/place_enrichment/batches` endpoint

    3. Use the returned batch ID to:
       - Check batch status at GET `/place_enrichment/batches/{batch_id}`
       - Retrieve results at GET `/place_enrichment/jobs?batchId={batch_id}`


    #### Submitting a Batch:


    Use POST `/place_enrichment/batches` to submit a batch.


    **Example Batch Payload:**

    ```json

    {
        "batch_name": "NYC Restaurants March 2024",
        "attributes": ["websites", "phoneNumbers", "socialHandles", "openingHours", "categories", "closed_permanently"], 
        "jobs": [
            {
                "place_id": "place_nyc_123",
                "inputs": {
                    "name": "Joe's Pizza",
                    "latitude": 40.7359,
                    "longitude": -73.9911,
                    "full_address": "7 Carmine St, New York, NY 10014",
                    "street": "Carmine St",
                    "city": "New York",
                    "state": "NY",
                    "postalCode": "10014",
                    "house": "7",
                    "country": "United States",
                    "country_code": "US",
                    "type": "restaurant",
                    "website": "http://www.joespizzanyc.com",
                    "phone": "+12122555803"
                }
            }
        ]
    }

    ```

    **Place Input Parameters:**

    For more details on the place input parameters, see the ```UniversalPlace```
    schema in the schemas section below.


    **Attributes:**


    The `attributes` parameter in your request specifies which attributes will
    be enriched. You can specify individual attributes like:


    - `["websites", "phoneNumbers"]` - Only enrich website and phone information

    - `["closed_permanently"]` - Only check if the business is permanently
    closed

    - `["websites", "phoneNumbers", "socialHandles", "openingHours",
    "categories", "closed_permanently"]` - Core business attributes

    - `["websites", "phoneNumbers", "socialHandles", "openingHours",
    "categories", "closed_permanently", "cuisine", "price_tier", "user_reviews",
    "menu_url"]` - Comprehensive enrichment


    For a full list of available attributes, see the enrichment schema
    documentation below.


    #### Tracking Batch Status:


    Use GET `/place_enrichment/batches/{batch_id}` to monitor the progress of
    your batch. The response includes:


    ```json

    {
        "id": "batch_2024_03_15_123456",
        "batch_name": "NYC Restaurants March 2024",
        "status": "in_progress",
        "jobs": {
            "pending": ["place_id_2", "place_id_3"],
            "in_progress": ["place_id_1"],
            "completed": ["place_id_4", "place_id_5"],
            "failed": []
        },
        "created_at": "2024-03-15T10:30:00Z",
        "updated_at": "2024-03-15T10:35:00Z"
    }

    ```


    The status field will be one of:

    - `pending`: Batch is queued but not yet started

    - `in_progress`: Batch is currently being processed

    - `completed`: All jobs in the batch are finished

    - `failed`: Batch encountered critical errors


    #### Retrieving Job Results:


    Once jobs are completed, use GET `/place_enrichment/jobs?batchId={batch_id}`
    to get the enrichment results. The response includes:


    ```json

    {
        "jobs": [
            {
                "place_id": "place_nyc_123",
                "status": "completed",
                "outputs": {
                    "website": "https://www.joespizzanyc.com",
                    "phone": "+12122555803",
                    "social_profiles": {
                        "instagram": "joespizzanyc",
                        "facebook": "joespizzanyc"
                    },
                    "open_closed_status": "Open",
                    "price_tier": "$$",
                    "last_enriched": "2024-03-15T10:35:00Z"
                },
                "job_metadata": {
                    "created_at": "2024-03-15T10:30:00Z",
                    "completed_at": "2024-03-15T10:35:00Z",
                    "processing_time_seconds": 300
                }
            }
        ],
        "total_count": 1,
        "completed_count": 1
    }

    ```


    Each job result includes:

    - Original place ID for tracking

    - Enrichment outputs based on the requested attribute set

    - Job metadata including timing information

    - Processing status and any error details if failed


    **Attribute Statuses:**


    Attributes like name, address, phone number, and website include an
    `attribute_status` field indicating the verification state:


    | Status | Description |

    |--------|-------------|

    | NOT_RUN | The attribute was not processed |

    | RUN_CONDITION_FAILED | The attribute was processed but failed the run
    condition |

    | RUN | The attribute was processed |

    | ERROR | The attribute processing failed |


    Example response with attribute statuses:

    ```json

    {
        "outputs": {
            "website": "https://www.joespizzanyc.com",
            "phone": "+12122555803"
        },
        "job_metadata": {
            "attribute_status": {
                "website": "RUN",
                "phone": "RUN",
                "address": "RUN",
                "name": "RUN"
            }
        }
    }

    ```
  version: '1.0'
servers:
  - url: https://api.repromptai.com/v1/{org}
    variables:
      org:
        default: reprompt
        description: The organization slug to use for the API
security: []
paths:
  /place_enrichment/enrich:
    post:
      summary: Enrich a single place synchronously
      operationId: submit_enrichment__org_slug__place_enrichment_enrich_post
      parameters:
        - name: apiKey
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Apikey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaceJob'
      responses:
        '200':
          description: Successfully enriched place data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlaceJobResult'
              example:
                place_id: place_nyc_123
                status: completed
                inputs:
                  name: Joe's Pizza
                  latitude: 40.7359
                  longitude: -73.9911
                  full_address: 7 Carmine St, New York, NY 10014
                outputs:
                  website: https://www.joespizzanyc.com
                  phone: '+12122555803'
                  social_profiles:
                    instagram: joespizzanyc
                    facebook: joespizzanyc
                  open_closed_status: Open
                  price_tier: $$
                  last_enriched: '2024-03-15T10:35:00Z'
                job_metadata:
                  last_enriched: '2024-03-15T10:35:00Z'
                  attribute_status:
                    website: RUN
                    phone: RUN
                    address: RUN
                    name: RUN
        '400':
          description: Invalid input format
        '401':
          description: Invalid API credentials
        '404':
          description: Enrichment not found
        '429':
          description: Rate limit exceeded
      security:
        - HTTPBearer: []
components:
  schemas:
    PlaceJob:
      properties:
        place_id:
          type: string
          title: Place Id
          description: >-
            The customer-identifier for the place and retained as
            external_customer_id in the database. When not set, will
            automatically generate a UUID.
          example: place_nyc_123
        inputs:
          $ref: '#/components/schemas/UniversalPlace'
          description: The place to enrich
          example:
            country_code: US
            full_address: 7 Carmine St, New York, NY 10014
            latitude: 40.7359
            longitude: -73.9911
            name: Joe's Pizza
        attributes:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Attributes
          description: >-
            List of attribute keys to enrich. See `GET
            /{org_slug}/place_enrichment/attributes_internal` for available keys
            and their required inputs. If both attribute_set and attributes are
            provided, attributes takes precedence.
          example:
            - websites
            - categories
            - closed_permanently
        attribute_set:
          anyOf:
            - $ref: '#/components/schemas/AttributeSet'
            - type: 'null'
          description: Specifies the set of attributes to enrich
        attributes_enrichments:
          anyOf:
            - items:
                type: object
              type: array
            - type: 'null'
          title: Attributes Enrichments
        refresh:
          type: boolean
          title: Refresh
          description: >-
            If true, will force a refresh of the place even if it has already
            been enriched.
          default: false
      type: object
      required:
        - place_id
        - inputs
      title: PlaceJob
    PlaceJobResult:
      properties:
        place_id:
          type: string
          title: Place Id
        status:
          type: string
          title: Status
        job_metadata:
          $ref: '#/components/schemas/JobMetadata'
        inputs:
          oneOf:
            - $ref: '#/components/schemas/UniversalPlace'
          title: Inputs
          discriminator:
            propertyName: input_type
            mapping:
              place:
                $ref: '#/components/schemas/UniversalPlace'
              query: '#/components/schemas/InputQuery'
        outputs:
          type: object
        reasoning:
          type: object
        confidence_scores:
          $ref: '#/components/schemas/JobConfidenceScores'
          description: Confidence scores for various attributes
      type: object
      required:
        - place_id
        - status
        - job_metadata
        - inputs
        - outputs
        - reasoning
      title: PlaceJobResult
    UniversalPlace:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Required. The business name, most important parameter for
            researching correct website and profiles. Assumed to be in the local
            language.
        full_address:
          anyOf:
            - type: string
            - type: 'null'
          title: Full Address
          description: >-
            Optional but HIGHLY IMPORTANT. Next to the name and coordinates will
            significantly boost accuracy of outputs if provided. This is the
            full address like you would see it on a letterhead.
        country_code:
          anyOf:
            - type: string
              pattern: ^[A-Z]{2}$
            - type: 'null'
          title: Country Code
          description: >-
            Two-letter country code (ISO 3166-1 alpha-2 or special codes like
            XK). If not provided, will be inferred from coordinates
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Category
          description: >-
            Optional. A string describing the primary category of the place.
            Very important for disambiguating, for example, hotels with hotel
            bars. Reprompt will be able to correct wrong types.
        website:
          anyOf:
            - type: string
            - type: 'null'
          title: Website
          description: >-
            Optional. If provided will be validated and corrected and prefered
            as source. Even if wrong still better to provide the website if
            available.
        phone:
          anyOf:
            - type: string
            - type: 'null'
          title: Phone
          description: >-
            Optional. Phone in international format. If no international format
            is provided, based on the latitude/longitude the country pre-fix
            will be assumed
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Optional identifier for tracking the place
        input_type:
          type: string
          const: place
          title: Input Type
          default: place
        latitude:
          anyOf:
            - type: number
            - type: 'null'
          title: Latitude
          description: >-
            Optional. The latitude coordinate of the place. Must be between -90
            and 90 if provided
        longitude:
          anyOf:
            - type: number
            - type: 'null'
          title: Longitude
          description: >-
            Optional. The longitude coordinate of the place. Must be between
            -180 and 180 if provided
        wkt_geometry:
          anyOf:
            - type: string
            - type: 'null'
          title: Wkt Geometry
          description: >-
            Optional. Instead of latitude and longitude put in a WKT geometry
            string. This will be converted into latitude and longitude. WKT uses
            (longitude latitude) coordinate order.
        street:
          anyOf:
            - type: string
            - type: 'null'
          title: Street
          description: Street name component of the address
        city:
          anyOf:
            - type: string
            - type: 'null'
          title: City
          description: City name
        house:
          anyOf:
            - type: string
            - type: 'null'
          title: House
          description: Building number or house identifier
        state:
          anyOf:
            - type: string
            - type: 'null'
          title: State
          description: State or region
        postalCode:
          anyOf:
            - type: string
            - type: 'null'
          title: Postalcode
          description: Postal or ZIP code
        country:
          anyOf:
            - type: string
            - type: 'null'
          title: Country
          description: Full country name
        opening_hours:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Opening Hours
          description: Opening hours in a structured format
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
          description: >-
            Data source this place came from (e.g., 'reprompt', 'overture',
            'foursquare')
      additionalProperties: true
      type: object
      required:
        - name
        - full_address
        - latitude
        - longitude
        - country_code
      title: UniversalPlace
    AttributeSet:
      type: string
      enum:
        - open_closed
        - core
        - all
      title: AttributeSet
      description: Defines the set of attributes to enrich for a place.
    JobMetadata:
      properties:
        last_enriched:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Enriched
          description: Timestamp of the last enrichment
        enrichment_metadata:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Enrichment Metadata
        attribute_status:
          additionalProperties:
            $ref: '#/components/schemas/AttributeStatusEnum'
          type: object
          title: Attribute Status
        country_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Country Code
      type: object
      required:
        - attribute_status
      title: JobMetadata
    JobConfidenceScores:
      properties:
        open_closed_status:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
          description: >-
            Confidence score for the open/closed status of a place. VERY_HIGH
            (95% accuracy) indicates extremely reliable open/closed status. HIGH
            (90% accuracy) indicates very reliable status. MEDIUM (80% accuracy)
            indicates reasonably reliable status. LOW (70% accuracy) indicates
            limited online evidence but likely correct status.NONE indicates
            insufficient evidence to determine status. This happens when a place
            has no internet presence at all.
        phone:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        website:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        address:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        categories:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        opening_hours:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        entity_type:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        name:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        parking_spaces:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        parking_spaces_total:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        parking_spaces_street:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        parking_spaces_shared:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        parking_spaces_dedicated:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        chain:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        tiktok:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        price_tier:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        approximate_user_reviews:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        menu:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
        school_geofence:
          anyOf:
            - $ref: '#/components/schemas/ConfidenceScore'
            - type: 'null'
          description: >-
            Confidence score for school geofence data. HIGH indicates OSM-based
            geofence with reliable school boundary data. MEDIUM indicates
            parcel-based geofence using property data analysis. NONE indicates
            no data
      type: object
      title: JobConfidenceScores
    AttributeStatusEnum:
      type: string
      enum:
        - NOT FOUND
        - ADDED
        - VERIFIED
        - CORRECTED
        - NOT VERIFIED
        - NOT ENRICHED
        - RUN
        - RUN_CONDITION_FAILED
        - ERROR
        - NOT_RUN
      title: AttributeStatusEnum
    ConfidenceScore:
      type: string
      enum:
        - VERY_HIGH
        - HIGH
        - MEDIUM
        - LOW
        - NONE
      title: ConfidenceScore
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````