Para dueños de apps
Verifica una reclamación con una petición.
Cada reclamación de tu publicación tiene su propio token. Pon {claim} en tu enlace de canje y quien reclama llega con él; envíalo de vuelta a Osokoro con tu clave de API para confirmar que es real y marcarlo como canjeado, así el mismo token no sirve dos veces.
Por qué no basta un código
Un código compartido se puede publicar en cualquier sitio. Un token de reclamación pertenece a una cuenta de Osokoro y a una oferta, y se canjea una sola vez. Usa el código en el pago y el token para saber de quién viene.
Cómo configurarlo
- 1Publica tu app desde la pantalla Mercado de tu panel y espera la aprobación.
- 2Haz que el enlace de canje de la oferta apunte a una página de tu app que contenga {claim}, por ejemplo https://tuapp.com/redeem?osokoro_claim={claim}.
- 3Crea una clave de API en Ajustes → Claves de API. Guárdala en tu servidor.
- 4Cuando alguien abra el enlace, llama al endpoint de abajo con el token. Aplica la oferta solo si la respuesta es redeemed.
Las claves de API vienen con los planes Everything y Studio. En Starter, tu publicación funciona igual solo con un código; el token es una prueba extra, no un requisito.
La petición
curl -X POST https://osokoro.com/api/v1/marketplace/claims/verify \
-H "Authorization: Bearer $OSOKORO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"token": "<osokoro_claim from the URL>", "redeem": true}'Las respuestas
- redeemed
- La reclamación es real y se acaba de marcar como canjeada. Aplica la oferta.
- valid
- La reclamación es real y aún no se ha canjeado (enviaste redeem: false).
- already_redeemed
- La reclamación ya se canjeó antes. No la apliques otra vez.
- not_found
- Ninguna reclamación de tus publicaciones tiene este token.
{
"status": "redeemed",
"offer_id": "0b8f6a52-…",
"offer": "…",
"kind": "discount",
"listing": "your-app",
"via": "launch",
"claimed_at": "2026-10-13T15:04:05Z",
"redeemed_at": "2026-10-13T15:06:12Z"
}¿Necesitas un SDK?
No. Es un solo POST con una clave bearer, así que la función de abajo es toda la integración. Cópiala en el código de tu servidor.
// Server-side only: the API key must never reach a browser.
export async function redeemOsokoroClaim(token: string) {
const res = await fetch("https://osokoro.com/api/v1/marketplace/claims/verify", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OSOKORO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ token, redeem: true }),
});
if (res.status === 404) return { ok: false as const, reason: "not_found" };
if (!res.ok) throw new Error(`Osokoro answered ${res.status}`);
const claim = await res.json();
// Apply the offer only on "redeemed": the token has now been used.
return { ok: claim.status === "redeemed", claim };
}Seguir tus propias campañas
Añade ?via=<etiqueta> al enlace para compartir de tu publicación: minúsculas, dígitos, guiones y guiones bajos. Las reclamaciones que llegan por él se cuentan por etiqueta en tu panel y se devuelven como via al verificar.