> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beinfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Claim

> Tenant claimable instantâneo: provisionar, reivindicar e ir pra live.

O Infi provisiona um **tenant claimable** na hora — com produto seed e
`sk_test_*` e `pk_test_*` — antes de você fazer login. Depois você **reivindica** (claim) e
vira dono. É o fluxo que Cursor, Lovable e a CLI usam.

<Info>
  **Sandbox → claim.** “Sandbox” no dia a dia = tenant claimable com chave de teste. A API e a CLI
  usam o vocabulário **claim / claimable** (`POST /public/v1/claimables`,
  `infi claim create`). Como pegar a chave está em
  <a href="/inicio-rapido">início rápido</a>.
</Info>

## O que é provisionado

Uma chamada de provisionamento prepara:

<CardGroup cols={2}>
  <Card title="Tenant anônimo">
    Slug aleatório (`app-ec62ff27`), pronto pra claim.
  </Card>

  <Card title="App + catálogo seed">
    Produto de exemplo, **não pronto pra vender**: versão 1 em `draft` e sem meter.
  </Card>

  <Card title="Chave sk_test_*">
    Retornada **uma única vez**, no corpo da resposta. Guarde com cuidado.
  </Card>

  <Card title="Chave pk_test_*">
    Chave publicável, segura para o navegador. Reservada: hoje nenhuma rota a aceita, então não construa em cima dela. A sk\_test\_\* fica no servidor.
  </Card>

  <Card title="claimUrl">
    `https://app-sandbox.beinfi.com/claim/{id}` — você abre e faz login.
  </Card>
</CardGroup>

<Warning>
  **O endpoint público não aceita `intent`.** `intent` (crm, prepaid-ai-chat, one-time, usage-saas) é conceito da CLI e do
  company file. Mandar `{"intent":"…"}` pro `/public/v1/claimables` responde
  `422 unrecognized field`. Pra escolher a forma do catálogo, declare em
  <a href="/company-as-code">company as code</a> — ou crie os produtos
  direto pelo <a href="/catalogo">catálogo</a>.
</Warning>

## Ciclo de vida

| Estado      | Como chega                                            | O que acontece                                                     |
| ----------- | ----------------------------------------------------- | ------------------------------------------------------------------ |
| `UNCLAIMED` | `POST /public/v1/claimables` (ou `infi claim create`) | Conta preparada, seed aplicado, `sk_test_*` e `pk_test_*` emitidas |
| `CLAIMED`   | Abrir a `claimUrl` e reivindicar                      | Vincula o user dono, grava `signup_source` e `claimed_at`          |
| Expirado    | Prazo de `expiresAt` atingido sem claim               | Conta não reivindicada expira                                      |

Pra conferir o estado sem chave:

```bash theme={null}
curl https://api-sandbox.beinfi.com/public/v1/claimables/{id}
# -> { id, status, tenantSlug, productId, ref, expiresAt }   (sem a chave)
```

<Warning>
  **Finalize dentro do prazo.** O prazo padrão é de 30 dias. Use o `expiresAt` retornado pela API e faça o claim
  antes dessa data para manter a conta e as chaves.
</Warning>

## Conta preparada e email de claim

O agente pode coletar email e nome do app antes de provisionar. `accountName`
preenche o nome da conta; `email` é um contato ainda não verificado. O login
durante o claim confirma a identidade de quem assume a conta.

Com a atualização de email de claim, o provisionamento com endereço enfileira um
aviso com nome, link e prazo. O envio acontece em segundo plano, sem incluir as
chaves. Há novas tentativas em caso de falha e um limite de um aviso por endereço
a cada 24 horas. Contas já assumidas ou expiradas são ignoradas antes do envio.

Continue a integração com as credenciais retornadas. O agente entrega a `claimUrl`
na conversa mesmo quando há email: `201` confirma a criação, não a entrega do
aviso. Não crie outra conta para tentar reenviar. Veja o
[cadastro pelo agente](/agent-onboarding) para o passo a passo.

## Fluxo

1. **Provisiona** — curl (ou CLI/MCP) devolve `claimUrl`, `expiresAt`, `sk_test_*` e `pk_test_*`.
2. **Catálogo** — crie e publique o seu produto: <a href="/catalogo">catálogo</a>.
3. **Cobre** — <a href="/link-de-pagamento">link de pagamento</a> ou
   `checkout()`, e confirme o pagamento por
   <a href="/webhooks">webhook/polling</a>.
4. **Claim** — abra a `claimUrl` da conversa ou do email, faça login e revise o nome. Produtos, chaves e slug são preservados.
5. **Go-live** — KYC humano do provedor e `sk_live_`. Nunca pule KYC.

## signup\_source

A origem do provisionamento vira o `signup_source` do tenant — é o `ref` que você
manda no provisionamento (`lovable`, `cursor`, `bolt`, `claude`, `cli`, `web`,
`mcp`):

```bash theme={null}
curl -X POST https://api-sandbox.beinfi.com/public/v1/claimables \
  -H 'Content-Type: application/json' -d '{"ref":"lovable"}'
```

<Tip>
  Veio do Lovable? Veja o guia de <a href="/lovable">integração com Lovable</a>.
</Tip>
