POST /v1/order Register acceptance of an open-flow winner, after the user sent the disclosed executionTx themselves (paying the gas). One order per quote. Only for an open-flow winner (the SDK’s lane is open-flow): every OIF-lane quote is refused EIN0007 at the re-approval step (known issue).

Request

Request body

OrderCreateRequest:

Response

data (OrderCreateAck):

Behavior

  • signature, signer and scheme go together — all three or none. Any one present makes all three required; a partial set is EIN0010. A quote requested without sourceAccount therefore cannot be signed.
  • None is admitted only when the deployment enables unsigned registrations (infinity.flags.orderSignatureOptional); otherwise EIN0010.
  • The hub re-approves the winner (product enabled, class admissibility, fingerprint) before the artifactHash and signature checks; a failure is EIN0007. POST /order registers create-flow winners only. Every OIF-lane quote answers EIN0007 here; complete it through POST /order/openfor. Decide with the SDK’s detectLane(q) (known issue).
  • A proxy-lane executionTx is not registered here (EIN0007) — it completes through POST /order/openfor, unsigned.
  • Register before expiresAt, and never re-quote after the transaction. The user’s transaction is already sent when this call is made, and a first registration at or after expiresAt (about 30 s after issue) is EIN0005. A refused registration doesn’t undo the transaction: it completes on chain anyway, unregistered, and a new quote would mean a second transaction. The same holds for EIN0006, EIN0007 and EIN0010 below; proxy-lane registrations follow the same rule (known issue).
  • Rate limit. Every request whose body validates, a duplicate included, is charged to your organization’s order bucket (Limits) before the quote is read; a shed is EIN0080.
  • Idempotent: a repeat for a quote that already has an order — including one created through POST /order/openfor — gets that order’s ack (same orderId and quoteId, and the first createdAt). It is answered right after the quote’s own checks (known, yours, quoted) and before the expiry, configuration, re-approval, artifactHash and signature checks, so it holds after expiresAt, after a configuration change (no EPOCH_SUPERSEDED is recorded), and whatever artifactHash or signature fields the repeat carries. A lost ack is recovered by re-posting.

Errors

For a quote that has no order yet, checked in this order: All four come after the user’s transaction was sent: never re-quote because of one (see Behavior). The gateway’s own refusals — a refused credential, a route not open to it, a rate limit, the hub unreachable or too slow — can come back from every route, with an EPX code and a real HTTP status (Errors — gateway codes); EIN0049 (internal, scrubbed) can come back from any route.

Example

Response

Illustrative values; formats follow the Response table. The ids are the example world’s quote, an oif-escrow-gasless quote that completes through POST /order/openfor: sent here first, it would be refused EIN0007 (known issue). The answer below is the idempotent repeat once its openFor order exists — that order’s ack (orderId is the openFor hubOrderId, createdAt its submittedAt), whatever signature fields the repeat carries. A create winner’s own registration answers in the same shape.

See also