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,signerandschemego together — all three or none. Any one present makes all three required; a partial set isEIN0010. A quote requested withoutsourceAccounttherefore cannot be signed.- None is admitted only when the deployment enables unsigned registrations
(
infinity.flags.orderSignatureOptional); otherwiseEIN0010. - The hub re-approves the winner (product enabled, class admissibility, fingerprint) before the
artifactHashand signature checks; a failure isEIN0007.POST /orderregisterscreate-flow winners only. Every OIF-lane quote answersEIN0007here; complete it throughPOST /order/openfor. Decide with the SDK’sdetectLane(q)(known issue). - A proxy-lane
executionTxis not registered here (EIN0007) — it completes throughPOST /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 afterexpiresAt(about 30 s after issue) isEIN0005. 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 forEIN0006,EIN0007andEIN0010below; 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 (sameorderIdandquoteId, and the firstcreatedAt). It is answered right after the quote’s own checks (known, yours, quoted) and before the expiry, configuration, re-approval,artifactHashand signature checks, so it holds afterexpiresAt, after a configuration change (noEPOCH_SUPERSEDEDis recorded), and whateverartifactHashor 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, anoif-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
- SDK:
client.api.createOrder();client.executeQuote()runs the whole open flow (Lanes — open-flow) - Step execution — open flow
- Handling errors