Generate own vendor credential
Generate a new API credential for yourself.
Credentials
/api/v1/credentialsGenerates a new capability-scoped credential for your vendor in the environment named by the
required X-Linra-Environment header. The secret is returned once and never again. The
requested capabilities may never exceed the UNION of what your OTHER active credentials
already hold (across every environment) — a superset request is rejected
(403 FORBIDDEN_CAPABILITY_NOT_GRANTED_TO_VENDOR); if you have zero active credentials
anywhere, this is rejected too (422 BUSINESS_VENDOR_FIRST_CREDENTIAL_REQUIRES_ONBOARDING) —
your very first credential is always issued by Linra during onboarding. Requires the Account
capability.
Body parameters
capabilitiesstringRequiredA comma-separated combination of one or more granted capabilities, drawn from the fixed set Offers, Stock, Cost, Orders, Account. Offers/Stock/Cost/Orders gate the commercial doors (Offers/Cost/Stock/Orders/Webhooks) as documented on each operation. Account gates the credentials-write door (generate/activate-deactivate/delete) — the corresponding reads (list credentials, get profile) require no capability at all. (Not a single-value enum here — a real value is a COMBINATION of one or more of these five names, comma-joined, e.g. the example below.)
Response
idstring (uuid)environmentstringclientIdstringclientSecretstringShown EXACTLY ONCE — no other read ever returns it.
capabilitiesstringA comma-separated combination of one or more granted capabilities, drawn from the fixed set Offers, Stock, Cost, Orders, Account. Offers/Stock/Cost/Orders gate the commercial doors (Offers/Cost/Stock/Orders/Webhooks) as documented on each operation. Account gates the credentials-write door (generate/activate-deactivate/delete) — the corresponding reads (list credentials, get profile) require no capability at all. (Not a single-value enum here — a real value is a COMBINATION of one or more of these five names, comma-joined, e.g. the example below.)
createdAtstring (date-time)Other responses
400Request validation failed.401No bearer token (UNAUTHORIZED_MISSING_TOKEN), an invalid token (UNAUTHORIZED_INVALID_TOKEN) or an expired one (UNAUTHORIZED_TOKEN_EXPIRED — mint a new token). UPSTREAM_AUTH_FAILED is different: a dependent service refused the Gateway itself. That is a server-side fault — retry later and do NOT re-mint your token. See the Rate limits & errors guide.403Missing the Account capability, or the requested capabilities exceed the union already authorized for your vendor.404No API route matches this path (NOT_FOUND_ROUTE). A missing resource on a real route returns that service’s own NOT_FOUND_* code instead.415The request body is not sent as application/json (UNSUPPORTED_MEDIA_TYPE).422You have zero active credentials in any environment — your first credential must come from Linra onboarding.429Too many requests. Retry after the Retry-After header (seconds).502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.curl --request POST \ --url https://api-omni-vendors.linra.net/api/v1/credentials \ --header 'Authorization: Bearer $TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "capabilities": "Offers, Cost" }'const res = await fetch('https://api-omni-vendors.linra.net/api/v1/credentials', { method: 'POST', headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ capabilities: 'Offers, Cost' }),});const { payload } = await res.json();var response = await httpClient.PostAsJsonAsync( "https://api-omni-vendors.linra.net/api/v1/credentials", new { capabilities = "Offers, Cost" });
var envelope = await response.Content.ReadFromJsonAsync<ApiResponse<VendorCredentialGeneratedResponse>>();Response
{ "state": "SUCCESS", "payload": { "id": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b", "environment": "Production", "clientId": "string", "clientSecret": "string", "capabilities": "Offers, Cost", "createdAt": "2026-08-22T09:14:03Z" }, "details": null}
