> ## 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.

# Ask the seller a question or ask for the address

> Sends one message to the seller of a deal.



## OpenAPI

````yaml POST /buy/deals/{deal_id}/inquiries
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:
  /buy/deals/{deal_id}/inquiries:
    post:
      tags:
        - buy
      summary: Ask the seller a question or ask for the address
      description: >-
        Sends one message to the seller of a deal. The API removes every phone
        number, email address and link from the message, and takes 500
        characters. One inquiry and one address request per deal per 24 hours
        reach the seller. An address request needs a recorded Non-Circumvention
        Agreement for the organization of the buyer. Without one, the API
        answers 409 agreement_required with the agreement id and its URL. Show
        the agreement to the person, then send the id in accept_agreement. The
        API answers 201 for a new row, and 200 for a row that exists already.
        The hold queue can take this write, and the API then answers 202.
      operationId: createMarketplaceInquiry
      parameters:
        - name: deal_id
          in: path
          required: true
          description: The public id in the path, for example deal_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
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - inquiry
                    - address_request
                  description: An inquiry or an address request.
                message:
                  type: string
                  minLength: 1
                  maxLength: 500
                  description: >-
                    The message for the seller. The API removes every contact
                    detail from it.
                accept_agreement:
                  description: >-
                    Accept the Non-Circumvention Agreement with the address
                    request.
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                      description: >-
                        The agreement id. The deal read and the 409
                        agreement_required both name it.
                  required:
                    - id
                  additionalProperties: false
              required:
                - type
                - message
              additionalProperties: false
      responses:
        '200':
          description: The resource exists already. The API answers it and writes nothing.
          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
        '201':
          description: Created
          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
        '202':
          description: >-
            Held. The hold queue took the write, and Investorlift staff release
            or refuse it inside one business day.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/HeldWrite'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
                additionalProperties: false
        '400':
          description: >-
            Body unusable, Identifier malformed, Parameter unusable, Parameter
            unknown
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.invalid_body'
                  - $ref: '#/components/schemas/Problem.invalid_id'
                  - $ref: '#/components/schemas/Problem.invalid_parameter'
                  - $ref: '#/components/schemas/Problem.unknown_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, 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.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: >-
            Agreement required, Deal closed, Key reused with a different body,
            Key in progress, Organization required
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.agreement_required'
                  - $ref: '#/components/schemas/Problem.deal_closed'
                  - $ref: '#/components/schemas/Problem.idempotency_conflict'
                  - $ref: '#/components/schemas/Problem.idempotency_in_progress'
                  - $ref: '#/components/schemas/Problem.organization_required'
        '422':
          description: Body failed validation
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem.validation_failed'
        '429':
          description: Cap reached, Daily cap reached, Inquiry already sent
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem.cap_reached'
                  - $ref: '#/components/schemas/Problem.daily_cap_reached'
                  - $ref: '#/components/schemas/Problem.duplicate_inquiry'
        '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
    HeldWrite:
      type: object
      properties:
        status:
          type: string
          const: held
          description: The write waits for a person at Investorlift.
        kind:
          type: string
          enum:
            - offer
            - inquiry
            - address_request
            - deal
          description: What kind of write the queue holds.
        hold_id:
          type: string
          description: The hold id, hld_<id>. The held event carries the same id.
        held_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))$
          description: When the queue took the write.
      required:
        - status
        - kind
        - hold_id
        - held_at
      additionalProperties: false
    Problem.invalid_body:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: Body unusable. Send a JSON body with the content type application/json.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#invalid_body
        title:
          const: Body unusable
        status:
          const: 400
        code:
          const: invalid_body
        recovery:
          const: Send a JSON body with the content type application/json.
    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.unknown_parameter:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Parameter unknown. Remove the parameter the detail names, because this
        operation reads no such field.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#unknown_parameter
        title:
          const: Parameter unknown
        status:
          const: 400
        code:
          const: unknown_parameter
        recovery:
          const: >-
            Remove the parameter the detail names, because this operation reads
            no such field.
        unknown_parameters:
          type: array
          items:
            type: string
          description: Every field of the request this operation does not read.
      required:
        - unknown_parameters
    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.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.agreement_required:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Agreement required. Read the agreement at agreement.url, then send
        accept_agreement with its id member set to agreement.id.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#agreement_required
        title:
          const: Agreement required
        status:
          const: 409
        code:
          const: agreement_required
        agreement:
          type: object
          properties:
            id:
              type: string
              description: The agreement id. Send it back in accept_agreement.
            url:
              type: string
              description: Where a person reads the agreement before the person accepts.
          required:
            - id
            - url
          additionalProperties: false
          description: The Non-Circumvention Agreement this address request binds to.
      required:
        - agreement
    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.organization_required:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Organization required. Create an organization on Investorlift, because
        the agreement binds to one.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#organization_required
        title:
          const: Organization required
        status:
          const: 409
        code:
          const: organization_required
        recovery:
          const: >-
            Create an organization on Investorlift, because the agreement binds
            to one.
    Problem.validation_failed:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Body failed validation. Correct each field the detail names, then repeat
        the call.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#validation_failed
        title:
          const: Body failed validation
        status:
          const: 422
        code:
          const: validation_failed
        recovery:
          const: Correct each field the detail names, then repeat the call.
    Problem.cap_reached:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Cap reached. Wait for the time in Retry-After, or raise your trust tier
        with the step in GET /me.
      properties:
        type:
          const: https://developers.investorlift.com/marketplace/errors#cap_reached
        title:
          const: Cap reached
        status:
          const: 429
        code:
          const: cap_reached
        recovery:
          const: >-
            Wait for the time in Retry-After, or raise your trust tier with the
            step in GET /me.
    Problem.daily_cap_reached:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Daily cap reached. Wait for the next day in UTC, or raise your trust
        tier with the step in GET /me.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#daily_cap_reached
        title:
          const: Daily cap reached
        status:
          const: 429
        code:
          const: daily_cap_reached
        recovery:
          const: >-
            Wait for the next day in UTC, or raise your trust tier with the step
            in GET /me.
    Problem.duplicate_inquiry:
      allOf:
        - $ref: '#/components/schemas/Problem'
      description: >-
        Inquiry already sent. Send one inquiry of each type for one deal in 24
        hours, then repeat the call.
      properties:
        type:
          const: >-
            https://developers.investorlift.com/marketplace/errors#duplicate_inquiry
        title:
          const: Inquiry already sent
        status:
          const: 429
        code:
          const: duplicate_inquiry
        recovery:
          const: >-
            Send one inquiry of each type for one deal in 24 hours, then repeat
            the call.
    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

- [Ask the seller a question or ask for the address](/api-reference/buy/ask-the-seller-a-question-or-ask-for-the-address.md)
- [Frequently asked questions](/guides/faq.md)
- [Read a parcel's listing cycles](/api-reference/endpoints/properties-listing-history.md)
- [Read the dataset version](/api-reference/endpoints/dataset.md)
- [Walkthroughs](/guides/walkthroughs.md)
