Skip to content

Create an eSIM order

POST
/api/v1/orders/esim
curl --request POST \
--url https://api-omni.linra.net/api/v1/orders/esim \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "partnerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "partnerGlobalId": "example", "geoScopeGlobalId": "example", "externalReference": "example", "amount": 1, "sagaId": "example", "productSku": "example", "email": "hello@example.com", "dataAllowance": 1, "validityDays": 1 }'
Media typeapplication/json
object
partnerId
required
string format: uuid
partnerGlobalId
required
string
geoScopeGlobalId
required
string
externalReference
required

Your own idempotency key.

string
amount
required
number format: decimal
sagaId
required
string
productSku
required
string
email
required
string format: email
dataAllowance
required
number format: decimal
validityDays
required
integer
Examplegenerated
{
"partnerId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"partnerGlobalId": "example",
"geoScopeGlobalId": "example",
"externalReference": "example",
"amount": 1,
"sagaId": "example",
"productSku": "example",
"email": "hello@example.com",
"dataAllowance": 1,
"validityDays": 1
}

Order accepted.

Media typeapplication/json
object
state
required
string
payload
required
details
object
payload
required

The saga’s own outcome envelope, distinct from the persisted EsimOrderResponse below. Internal margin fields (commission/wholesaleAmount) that also exist on this response are deliberately NOT documented here — treat them as reserved/unsupported if you encounter them.

object
orderId

The database ID — use this for GET /api/v1/orders/esim/{orderId}.

string format: uuid
sagaId
string
orderGlobalId
string
nullable
orderStatus
string
nullable
status
string
message
string
nullable
amount
number format: decimal
Example
{
"state": "SUCCESS",
"payload": {
"status": "Completed"
}
}

Request validation failed.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

Duplicate/in-progress/intervention-required prior attempt.

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

A business rule rejected the request (HTTP 422).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}

Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).

Media typeapplication/json

The envelope every /api/v1 ERROR response uses. state carries the machine-readable error code (see the Errors guide).

object
state
required
string
payload
required

Always null on an error response.

object
details
object
Example
{
"state": "NOT_FOUND_ORDER",
"payload": null
}
Retry-After
integer

Seconds to wait before retrying.