Request a return on a delivered fulfillment group
const url = 'https://api-omni.linra.net/api/v1/scent/orders/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/return-request';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"fulfillmentGroupId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","lines":[{"scentOrderLineId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","quantity":1,"reasonCode":"Damaged"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api-omni.linra.net/api/v1/scent/orders/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/return-request \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "fulfillmentGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "lines": [ { "scentOrderLineId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1, "reasonCode": "Damaged" } ] }'Submits a pending return request for review. This does NOT move any money by itself — an internal operator approves or declines it; approval triggers the existing refund/commission clawback chain. There is no partner-initiated cancel/withdraw of a submitted request in this version of the API.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The scent order’s own GUID (same as /api/v1/orders/scent/{orderId}).
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Responses
Section titled “Responses”The created return request, status Pending.
object
object
object
object
Example
{ "state": "SUCCESS", "payload": { "status": "Pending" }}An invalid reasonCode, or VALIDATION_INVALID_REASON_CODE.
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}Unknown order, fulfillment group, or order line (or cross-tenant order — no existence leak).
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Examples
{ "state": "NOT_FOUND_SCENT_ORDER", "payload": null, "details": {}}{ "state": "NOT_FOUND_FULFILLMENT_GROUP", "payload": null, "details": {}}{ "state": "NOT_FOUND_ORDER_LINE", "payload": null, "details": {}}An eligibility rule failed.
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Examples
{ "state": "BUSINESS_RETURN_REQUEST_GROUP_NOT_DELIVERED", "payload": null, "details": {}}{ "state": "BUSINESS_RETURN_REQUEST_WINDOW_EXPIRED", "payload": null, "details": { "windowDays": 14 }}{ "state": "BUSINESS_RETURN_REQUEST_EXCEEDS_REMAINING", "payload": null, "details": {}}{ "state": "BUSINESS_RETURN_REQUEST_DUPLICATE_LINE", "payload": null, "details": {}}Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).
The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).
object
Always null on an error response.
object
object
Example
{ "state": "NOT_FOUND_ORDER", "payload": null}Headers
Section titled “Headers”Seconds to wait before retrying.