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

# Share the address with the buyer

> Shares the property address with the buyer who asked for it.



## OpenAPI

````yaml POST /sell/inquiries/{inquiry_id}/approve
openapi: 3.1.0
info:
  title: Investorlift Marketplace API
  version: '2026-09-18'
  summary: List, publish and trade wholesale real estate deals on Investorlift.
  description: >-
    The Marketplace API gives a seller organization and a buyer account the same
    actions the Investorlift application gives them. A seller creates a draft,
    publishes a deal, reads its leads and answers offers. A buyer searches
    deals, asks for an address, makes an offer and keeps a buy box. Every answer
    carries a request id, and every refusal carries a problem code with one
    recovery sentence.
  contact:
    name: Investorlift support
    email: support@investorlift.com
servers:
  - url: https://api.investorlift.com/marketplace/v1
    description: Production
security:
  - oauth2: []
tags:
  - name: sell
    description: What a seller organization does with its drafts and deals.
  - name: buy
    description: What a buyer account does with deals, offers and buy boxes.
  - name: me
    description: What this token can do right now.
  - name: events
    description: >-
      What Investorlift sends to a webhook endpoint, one entry for each event
      type.
paths:
  /sell/inquiries/{inquiry_id}/approve:
    post:
      tags:
        - sell
      summary: Share the address with the buyer
      description: >-
        Shares the property address with the buyer who asked for it. The buyer
        gets the address in the conversation and in an email. An inquiry that is
        not an address request, one already shared and one already declined each
        answer a refusal.
      operationId: approveMarketplaceAddressRequest
      parameters:
        - name: inquiry_id
          in: path
          required: true
          description: >-
            The public id in the path, for example inquiry_id as
            mdl_a1b2c3d4e5f6.
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            A key of your own that names this attempt. The same key with the
            same body replays the stored answer.
          schema:
            type: string
            minLength: 1
            maxLength: 255
      responses:
        '200':
          description: Success
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Inquiry'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
                additionalProperties: false
        '400':
          description: Identifier malformed, Parameter unusable
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.invalid_id'
                  - $ref: '#/components/schemas/Problem.invalid_parameter'
        '401':
          description: Not authenticated
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.unauthorized'
        '403':
          description: >-
            Designation missing, Refused, Scope missing, No organization, Terms
            not accepted
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.designation_required'
                  - $ref: '#/components/schemas/Problem.forbidden'
                  - $ref: '#/components/schemas/Problem.insufficient_scope'
                  - $ref: '#/components/schemas/Problem.no_organization'
                  - $ref: '#/components/schemas/Problem.terms_required'
        '404':
          description: Not found
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.not_found'
        '405':
          description: Method not allowed
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.method_not_allowed'
        '409':
          description: Deal closed, Key reused with a different body, Key in progress
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.deal_closed'
                  - $ref: '#/components/schemas/Problem.idempotency_conflict'
                  - $ref: '#/components/schemas/Problem.idempotency_in_progress'
        '422':
          description: Transition not allowed
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.invalid_transition'
        '503':
          description: Service unavailable
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.origin_error'
      security:
        - oauth2:
            - inquiries:write
components:
  headers:
    XRequestId:
      description: The id this answer shares with the Investorlift request log.
      schema:
        type: string
  schemas:
    Inquiry:
      type: object
      properties:
        id:
          type: string
          description: The inquiry id, inq_ and the row id.
        deal_id:
          type: string
          description: The deal the inquiry is about.
        type:
          type: string
          enum:
            - inquiry
            - address_request
          description: An inquiry or an address request.
        message:
          type: string
          description: The buyer's message after the contact scrubber ran.
        address_state:
          anyOf:
            - type: string
              enum:
                - requested
                - approved
                - declined
            - type: 'null'
          description: >-
            The state of an address request: requested, approved or declined. It
            is null on a plain inquiry.
        address:
          description: >-
            The property address. The seller shares it on an approved address
            request.
          anyOf:
            - type: string
            - type: 'null'
        buyer:
          description: >-
            Who sent the inquiry. A buyer reading their own inquiry gets no
            buyer block.
          anyOf:
            - $ref: '#/components/schemas/BuyerStub'
            - type: 'null'
        created_at:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        updated_at:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
      required:
        - id
        - deal_id
        - type
        - message
        - address_state
        - created_at
        - updated_at
      additionalProperties: false
    Meta:
      type: object
      properties:
        request_id:
          type: string
          description: The id this answer shares with the log.
        api_version:
          type: string
          description: The contract version the body is rendered at.
      required:
        - request_id
        - api_version
      additionalProperties: false
    Problem.invalid_id:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Identifier malformed. Send the public id with its type prefix, for
        example mdl_a1b2c3d4e5f6.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#invalid_id
        title:
          const: Identifier malformed
        status:
          const: 400
        code:
          const: invalid_id
        recovery:
          const: >-
            Send the public id with its type prefix, for example
            mdl_a1b2c3d4e5f6.
    Problem.invalid_parameter:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Parameter unusable. Correct the query parameter the detail names, then
        repeat the call.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#invalid_parameter
        title:
          const: Parameter unusable
        status:
          const: 400
        code:
          const: invalid_parameter
        recovery:
          const: Correct the query parameter the detail names, then repeat the call.
    Problem.unauthorized:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Not authenticated. Send a current access token for this API, and start a
        new authorization when the token is expired.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#unauthorized
        title:
          const: Not authenticated
        status:
          const: 401
        code:
          const: unauthorized
        recovery:
          const: >-
            Send a current access token for this API, and start a new
            authorization when the token is expired.
    Problem.designation_required:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Designation missing. Finish the onboarding of the side you call, then
        repeat the call.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#designation_required
        title:
          const: Designation missing
        status:
          const: 403
        code:
          const: designation_required
        recovery:
          const: Finish the onboarding of the side you call, then repeat the call.
        designation:
          description: The designation the side of this operation needs.
          type: string
          enum:
            - seller
            - buyer
    Problem.forbidden:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Refused. Ask Investorlift support why the account, the client or the
        organization is stopped.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#forbidden
        title:
          const: Refused
        status:
          const: 403
        code:
          const: forbidden
        recovery:
          const: >-
            Ask Investorlift support why the account, the client or the
            organization is stopped.
    Problem.insufficient_scope:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Scope missing. Start a new authorization that asks for the scope named
        in the detail.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#insufficient_scope
        title:
          const: Scope missing
        status:
          const: 403
        code:
          const: insufficient_scope
        recovery:
          const: >-
            Start a new authorization that asks for the scope named in the
            detail.
        scope:
          type: string
          enum:
            - marketplace:profile
            - deals:read
            - deals:write
            - offers:read
            - offers:write
            - inquiries:read
            - inquiries:write
            - leads:read
            - leads:write
            - contacts:read
            - reviews:read
            - buy_boxes:manage
            - webhooks:manage
            - events:read
          description: The scope this operation needs.
      required:
        - scope
    Problem.no_organization:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        No organization. Create an organization on Investorlift, then repeat the
        call.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#no_organization
        title:
          const: No organization
        status:
          const: 403
        code:
          const: no_organization
        recovery:
          const: Create an organization on Investorlift, then repeat the call.
    Problem.terms_required:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Terms not accepted. Accept the Marketplace API Terms on the consent
        page, then start a new authorization.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#terms_required
        title:
          const: Terms not accepted
        status:
          const: 403
        code:
          const: terms_required
        recovery:
          const: >-
            Accept the Marketplace API Terms on the consent page, then start a
            new authorization.
        agreement_id:
          type: string
          description: The version of the Marketplace API Terms to accept.
      required:
        - agreement_id
    Problem.not_found:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Not found. Check the id, and check that the account you call with owns
        the resource.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#not_found
        title:
          const: Not found
        status:
          const: 404
        code:
          const: not_found
        recovery:
          const: >-
            Check the id, and check that the account you call with owns the
            resource.
    Problem.method_not_allowed:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Method not allowed. Use one of the methods the documentation lists for
        this path.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#method_not_allowed
        title:
          const: Method not allowed
        status:
          const: 405
        code:
          const: method_not_allowed
        recovery:
          const: Use one of the methods the documentation lists for this path.
    Problem.deal_closed:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Deal closed. Read the deal to see the current status, and act on an open
        deal instead.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#deal_closed
        title:
          const: Deal closed
        status:
          const: 409
        code:
          const: deal_closed
        recovery:
          const: >-
            Read the deal to see the current status, and act on an open deal
            instead.
    Problem.idempotency_conflict:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Key reused with a different body. Send a new Idempotency-Key for this
        body, because the stored key holds another one.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#idempotency_conflict
        title:
          const: Key reused with a different body
        status:
          const: 409
        code:
          const: idempotency_conflict
        recovery:
          const: >-
            Send a new Idempotency-Key for this body, because the stored key
            holds another one.
    Problem.idempotency_in_progress:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Key in progress. Wait one second, then repeat the call with the same
        Idempotency-Key.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#idempotency_in_progress
        title:
          const: Key in progress
        status:
          const: 409
        code:
          const: idempotency_in_progress
        recovery:
          const: Wait one second, then repeat the call with the same Idempotency-Key.
    Problem.invalid_transition:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Transition not allowed. Read the resource, then pick a status the detail
        lists as a next step.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#invalid_transition
        title:
          const: Transition not allowed
        status:
          const: 422
        code:
          const: invalid_transition
        recovery:
          const: >-
            Read the resource, then pick a status the detail lists as a next
            step.
    Problem.origin_error:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Service unavailable. Repeat the call in a minute, and tell Investorlift
        support when the answer stays the same.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#origin_error
        title:
          const: Service unavailable
        status:
          const: 503
        code:
          const: origin_error
        recovery:
          const: >-
            Repeat the call in a minute, and tell Investorlift support when the
            answer stays the same.
    BuyerStub:
      type: object
      properties:
        buyer_id:
          type: string
          description: The buyer id, byr_<person id>.
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: The name of the buyer.
        entity_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The legal entity the buyer invests through, or null when none is on
            file.
        email:
          description: >-
            The email address of the buyer. An owner or an admin with the scope
            contacts:read reads it.
          anyOf:
            - type: string
            - type: 'null'
        phone:
          description: >-
            One phone number of the buyer. An owner or an admin with the scope
            contacts:read reads it.
          anyOf:
            - type: string
            - type: 'null'
        phone_type:
          description: >-
            The line type of that phone, for example MOBILE. It rides with the
            phone number.
          anyOf:
            - type: string
            - type: 'null'
      required:
        - buyer_id
        - name
        - entity_name
      additionalProperties: false
    Problem:
      type: object
      description: >-
        One refusal, as RFC 9457 application/problem+json. The code picks the
        status, the title and the recovery sentence.
      properties:
        type:
          type: string
          format: uri
          description: The errors page anchor of the code.
        title:
          type: string
          description: The short title of the code.
        status:
          type: integer
          description: The HTTP status of this answer.
        code:
          type: string
          enum:
            - address_unavailable
            - agreement_required
            - api_offers_disabled
            - below_floor
            - cap_reached
            - client_limit
            - daily_cap_reached
            - deal_changed
            - deal_closed
            - deal_incomplete
            - designation_required
            - draft_under_review
            - duplicate_inquiry
            - forbidden
            - idempotency_conflict
            - idempotency_in_progress
            - idv_required
            - insufficient_balance
            - insufficient_role
            - insufficient_scope
            - invalid_body
            - invalid_id
            - invalid_parameter
            - invalid_transition
            - lead_locked
            - method_not_allowed
            - no_organization
            - not_a_member
            - not_found
            - offer_exists
            - offer_required
            - offer_superseded
            - organization_required
            - origin_error
            - person_exists
            - preview_expired
            - preview_mismatch
            - proof_of_funds_expired
            - proof_of_funds_missing
            - rate_limited
            - requirement_unmet
            - resource_exists
            - resource_limit
            - strike_exists
            - strike_window_closed
            - terms_required
            - unauthorized
            - unknown_parameter
            - validation_failed
            - webhook_limit
            - webhook_url_refused
            - wrong_side
          description: The problem code. Read this, never the title.
        detail:
          type: string
          description: What happened for this one request.
        recovery:
          type: string
          description: One sentence that says what to do next.
        request_id:
          type: string
          description: The id this answer shares with the log.
      required:
        - type
        - title
        - status
        - code
        - detail
        - recovery
        - request_id
  securitySchemes:
    oauth2:
      type: oauth2
      description: >-
        Authorization code with PKCE. The person grants the scopes on the
        Investorlift consent page and accepts the Marketplace API Terms there.
      flows:
        authorizationCode:
          authorizationUrl: https://mogul.investorlift.com/api/auth/oauth2/authorize
          tokenUrl: https://mogul.investorlift.com/api/auth/oauth2/token
          refreshUrl: https://mogul.investorlift.com/api/auth/oauth2/token
          scopes:
            marketplace:profile: Read your account, your organization and your trust tier.
            deals:read: Read your deals as a seller, and the deals you see as a buyer.
            deals:write: >-
              Create drafts, add media and documents, publish deals and change
              their status.
            offers:read: >-
              Read the offers on your deals as a seller, and your own offers as
              a buyer.
            offers:write: Make, counter, accept, decline and withdraw offers.
            inquiries:read: >-
              Read the inquiries and address requests on your deals, and your
              own.
            inquiries:write: Send inquiries and address requests, and answer address requests.
            leads:read: Read the leads on your deals with their history.
            leads:write: Set a lead status, add a lead and file a strike.
            contacts:read: >-
              Read the email address and the phone number of a buyer on your
              deals.
            reviews:read: Read a seller public profile and the reviews of that seller.
            buy_boxes:manage: Read and change your buy boxes and their alerts.
            webhooks:manage: Create, read and delete the webhook endpoints of your side.
            events:read: Read the event feed of your side.

````

## Related topics

- [Share the address with the buyer](/api-reference/sell/share-the-address-with-the-buyer.md)
- [Rank buyers for a property](/api-reference/endpoints/buyers-match.md)
- [Ask the seller a question or ask for the address](/api-reference/buy/ask-the-seller-a-question-or-ask-for-the-address.md)
- [Quickstart for buyers](/marketplace/quickstart-buyer.md)
