Buyers’ price offers: what the agent decided and what it did notAll articles

Buyers’ price offers: what the agent decided and what it did not

A price offer nobody reacts to is a lost sale. This case shows how a dealer reviews the offers the agent was not allowed to decide on its own.

Published: 2026-09-12Reading time: 4 mintapinomahub API & workflows
API & processesPricing & valuationAPIMarketplaces

Buyers propose prices on the marketplace. The stored floor price is the agent’s only basis for negotiation. If there is no floor price for an item, it does not decide on a price offer but hands it over to a human. These handed-over offers are the work queue — and they lapse if nobody looks at them.

Buyers’ price offers: what the agent decided and what it did notInput: price offers on the marketplace, some decided, some handed over 1. Look up the floor prices (GET /agent/items/prices): minPriceCents per itemKey with updatedAt 2. Filter the open offers (GET /agent/inbox/offers): status needs_human shows the offers a human has to decide 3. Read the conversation (GET /agent/inbox/conversations/{conversationId}): History with actions, findings and suggestedReply 4. Reply (POST /agent/inbox/conversations/{conversationId}/reply): deliveryStatus; the call requires the conversation to have been taken over first 5. Mark as read (POST /agent/inbox/conversations/{conversationId}/read): unreadCount drops, the work queue stays honest Output: every offer has a decision — from the agent or from a colleague decision knows accept, decline, counter, record and handoff. decisionPriceCents shows the price at which it was decided.Buyers’ price offers: what the agent decided and what itdid notInput: price offers on the marketplace, some decided, some handed over01Look up the floor pricesGET /agent/items/pricesminPriceCents per itemKey with updatedAt02Filter the open offersGET /agent/inbox/offersstatus needs_human shows the offers a human has to decide03Read the conversationGET /agent/inbox/conversations/{conversationId}History with actions, findings and suggestedReply04ReplyPOST /agent/inbox/conversations/{conversationId}/replydeliveryStatus; the call requires the conversation to have been taken over first05Mark as readPOST /agent/inbox/conversations/{conversationId}/readunreadCount drops, the work queue stays honestOutput: every offer has a decision — from the agent or from a colleaguedecision knows accept, decline, counter, record and handoff. decisionPriceCents shows the price at which it wasdecided.
Five calls from the floor price to the settled offer.

The inbox offer list shows price offers with the decision the agent made — or without a decision if it handed the offer over. Where it decided, decisionPriceCents gives the price where available. The needs_human filter narrows it to what a human has to decide.

SurfaceRoles
Sales agentParts trading, Vehicle trading

What this case requires

  • A marketplace channel with consent granted. Without it no price offers reach the agent.
  • Stored floor prices. They are the agent’s only basis for negotiation; without them it does not decide.
  • Someone who checks the filter regularly. An offer carries an expiry date.
  • A line on counter-offers. How far a colleague goes below the floor price is a commercial decision, not a technical one.

The sequence

The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.

The call chain of this use case
StageCallWhat exists afterwards
Look up the floor pricesGET /agent/items/pricesminPriceCents per itemKey with updatedAt
Filter the open offersGET /agent/inbox/offersstatus needs_human shows the offers a human has to decide
Read the conversationGET /agent/inbox/conversations/{conversationId}History with actions, findings and suggestedReply
ReplyPOST /agent/inbox/conversations/{conversationId}/replydeliveryStatus; the call requires the conversation to have been taken over first
Mark as readPOST /agent/inbox/conversations/{conversationId}/readunreadCount drops, the work queue stays honest

Why each stage is needed

  1. Look up the floor prices. GET /agent/items/prices lists minPriceCents per itemKey with updatedAt. Before a colleague judges an offer, they see the basis on which the agent would have decided — and whether that basis is still current.
  2. Filter the open offers. GET /agent/inbox/offers knows status with pending, decided and needs_human. Each offer carries itemPriceCents, offerPriceCents, expiresAt, decision with accept, decline, counter, record or handoff, and where applicable decisionPriceCents.
  3. Read the conversation. GET /agent/inbox/conversations/{conversationId} shows the history with actions, findings and suggestedReply. That way the colleague sees the history before replying.
  4. Reply. POST /agent/inbox/conversations/{conversationId}/reply requires the conversation to have been taken over first with POST /agent/inbox/conversations/{conversationId}/takeover, and returns deliveryStatus. On a mailbox or marketplace channel the reply is queued for delivery; on the website it counts as delivered at once.
  5. Mark as read. POST /agent/inbox/conversations/{conversationId}/read resets unreadCount. That sounds minor but keeps the work queue honest: what is read and answered disappears from the view of those looking for open items.
Load only the offers a human has to decide
curl -H 'X-Api-Key: <API_KEY>' \
  'https://api.tapinomahub.com/hub/index.php/agent/inbox/offers?status=needs_human&limit=25'

What you end up with

In the end every price offer has a decision — from the agent where the floor price supports it, and from a colleague where it does not. No offer lapses because it sat in the wrong list.

Where to find this in the documentation

The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-agent). All use cases arranged by surface and role: overview of the use cases.

Frequently asked

Why did the agent not decide an offer itself?

The contract explicitly names one case: without a floor price for an item it does not decide on a price offer but hands it over to a human. The related conversation shows the history.

Can I see at which price the agent decided?

Yes. decisionPriceCents names the price of the decision, decidedAt the time.

What does record mean as a decision?

record is one of the values of decision, alongside accept, decline, counter and handoff. The contract does not describe this value further.