Docs Unnotech
    • Visão geral da API
    • Guia: Originação FGTS
    • Guia: Originação CLT
    • Guia: Quota diária
    • Changelog e avisos de mudança
    • Autenticação
      • Gera um access_token
        POST
    • Originação
      • FGTS
        • Busca applications pelo id externo do consumidor
        • Cria uma solicitação (application) e dispara a cotação
        • Status enxuto da application (para polling)
        • Detalha uma application pelo id
        • Re-cota uma application (ofertas antigas invalidadas)
        • Lê o KYC (pré-preenchido quando disponível na plataforma)
        • Submete o KYC (cadastro completo) exigido antes do aceite
        • Aceita uma oferta e inicia a contratação
      • CLT
        • Busca solicitações pelo id externo do consumidor
        • Cria uma solicitação (application) de consignado CLT
        • Status enxuto da solicitação (para polling)
        • Detalha uma solicitação pelo id
        • Consulta o consentimento do trabalhador
        • Força uma nova verificação do consentimento
        • Consulta a margem consignável por vínculo
        • Simula e monta o menu de ofertas
        • Completa o cadastro do cliente
        • Lê o KYC (pré-preenchido quando disponível)
        • Submete o KYC exigido antes do aceite
        • Aceita uma oferta e inicia a contratação
    • Propostas
      • Lista propostas com filtros e paginação
        GET
      • Detalha uma proposta pelo UUID
        GET
    • Admin
      • Usuários
        • Lista usuários com filtros e paginação
        • Cadastra um novo usuário
        • Remove o usuário dos seus parceiros
        • Detalha um usuário pelo UUID
        • Atualiza um usuário (parcial) — e liga/desliga o acesso dele aos seus parceiros
      • Parceiros
        • Lista parceiros com filtros e paginação
        • Cadastra um novo parceiro
        • Detalha um parceiro pelo UUID
        • Remove um parceiro
        • Atualiza um parceiro (parcial)
        • Ativa ou inativa um usuário dentro do parceiro
      • Grupos
        • Lista grupos disponíveis
    • Esquemas
      • CreateUserRequest
      • CreateUserResponse
      • UserDetail
      • Data
      • CreateUserResponseData
      • BankerizeErrorResponse
      • UserPartnerEntry
      • Address
      • BankAccount
      • CreatePartnerRequest
      • Partner
      • Pix
      • CreatePartnerResponse
      • CreatePartnerResponseData
      • Customer
      • ApiError
      • ApiErrorResponse
      • CreateFgtsApplicationRequest
      • ErrorDetail
      • FieldErrorCode
      • ApiErrorCode
      • ApplicationStatus
      • FgtsInstallment
      • FgtsQuote
      • OfferStatus
      • FgtsApplication
      • QuoteStatus
      • RejectionKind
      • FgtsOffer
      • RejectionReason
      • AcceptFgtsOfferRequest
      • AcceptFgtsOfferResponse
      • AccountType
      • CivilStatus
      • DisbursementMethod
      • FgtsKyc
      • FgtsKycAddress
      • FgtsKycBank
      • Gender
      • PixKeyType
      • TokenRequest
      • TokenResponse
      • CltCustomer
      • OAuth2ErrorResponse
      • AuthorizationStatus
      • Group
      • UserDetailResponse
      • CreateCltApplicationRequest
      • CltCustomerCompleteness
      • UpdatePartnerRequest
      • CltApplication
      • CltEmploymentAlert
      • CltAuthorization
      • CltInstallment
      • PartnerDetail
      • PartnerDetailResponse
      • PageInfo
      • CltEmployment
      • CltQuote
      • SortInfo
      • CltSimulation
      • CustomerField
      • CltIneligibilityReason
      • UsersPage
      • CltOffer
      • ProposalsPage
      • AcceptCltOfferRequest
      • PublicProposalListItem
      • PublicCustomerSummary
      • QuoteBasis
      • AcceptCltOfferResponse
      • PublicDisbursementAccount
      • CltSimulationRequest
      • OfferNotice
      • PublicLoanSummary
      • CltKycAddress
      • CltKycBank
      • PublicProposalDetailResponse
      • CltKyc
      • PartnerListItem
      • PartnersPage
      • ListOfGroupsResponse
      • CltKycEmployer
      • FgtsApplicationList
      • FgtsApplicationStatus
      • UpdateUserRequest
      • UpdateCltCustomerRequest
      • UserListItem
      • PublicProposalDetail
      • CltApplicationList
      • CltApplicationStatus
      • CltMargin

    Guia: Quota diária

    Quantas chamadas por dia a sua integração pode fazer em cada rota, como saber o quanto ainda resta
    e o que acontece quando o teto é atingido.

    Nem toda rota tem quota#

    A quota é opt-in por rota: só vale onde há uma política cadastrada, e cada política vale para um
    par método + caminho. Rota sem política cadastrada não tem teto — e é a situação da grande maioria
    dos endpoints da API pública hoje.
    Hoje há duas rotas com quota, as duas aberturas de solicitação:
    RotaQuota padrão
    POST /api/v1/fgts/applications100 chamadas por dia
    POST /api/v1/clt/applications100 chamadas por dia
    São as duas portas de entrada da originação, e as chamadas mais caras da plataforma: a do FGTS
    dispara cotação em todas as bancarizadoras elegíveis ao mesmo tempo, e a do CLT abre a verificação
    do consentimento na Dataprev. As duas têm baldes separados — gastar as 100 do FGTS não tira nada
    do CLT.
    Acompanhar o que você já abriu não consome quota. GET /applications/{id},
    GET /applications/{id}/status, o KYC, o aceite e as demais rotas seguem sem teto — o polling do
    fluxo de originação não é penalizado. Se uma rota nova passar a ter quota, ela aparece nesta tabela
    antes de entrar em vigor.

    A quota é por parceiro, e o dia vira à meia-noite#

    O contador é do parceiro, não da chave de API: se você opera com mais de uma chave, todas somam
    no mesmo balde. E o dia é o dia civil no fuso de Brasília (America/Sao_Paulo) — à meia-noite o
    saldo volta cheio, sem janela deslizante e sem carregar sobra de um dia para o outro.

    Como saber quanto resta#

    Toda resposta de uma rota com quota traz três headers:
    HeaderO que diz
    DailyQuota-Limitseu teto do dia nessa rota
    DailyQuota-Remainingquantas chamadas ainda restam
    DailyQuota-Resetsegundos até o saldo voltar cheio
    DailyQuota-Reset é uma duração, não um horário. É de propósito: um instante só faz sentido
    junto do relógio e do fuso de quem o lê, e relógio de máquina dessincronizado produziria uma conta
    errada em silêncio. Some os segundos ao seu próprio relógio se precisar de uma hora.
    Os três headers estão expostos no CORS, então uma integração que roda no browser também os lê.
    Se os headers não vierem em alguma resposta, trate como ausência de informação, e não como quota
    zerada: a plataforma prefere deixar a chamada passar sem contabilizar a publicar um número em que
    não confia.

    Quando o teto é atingido#

    A chamada seguinte responde 429, e não chega a ser processada — nada é criado do outro lado.
    {
      "error": {
        "code": "QUOTA_EXCEEDED",
        "message": "Você atingiu a quota diária de 100 chamadas em POST /api/v1/fgts/applications. Para ampliar o limite, fale com o suporte da Unno.",
        "correlation_id": "0f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f"
      }
    }
    Retry-After traz os segundos que faltam para a virada do dia. Repetir antes disso só devolve outro
    429: diferente de RATE_LIMIT_EXCEEDED, que é transitório e passa em segundos, QUOTA_EXCEEDED
    não se resolve esperando um pouco — ou você espera a virada, ou o teto precisa subir.
    Os dois códigos chegam com o mesmo status. Distinga pelo error.code, nunca pelo 429 sozinho.
    Uma falha nossa não consome sua quota: se a plataforma responder 5xx, a chamada é devolvida ao seu
    saldo do dia.

    Bloqueio não é quota esgotada#

    Existe um segundo desfecho, e ele não é 429:
    {
      "error": {
        "code": "ACCESS_BLOCKED",
        "message": "O acesso da sua empresa a POST /api/v1/fgts/applications está bloqueado. Entre em contato com o seu contato comercial na Unno.",
        "correlation_id": "0f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f"
      }
    }
    ACCESS_BLOCKED é uma decisão administrativa sobre a sua empresa naquela rota, não um teto
    atingido. Não vem com Retry-After nem com headers de quota, porque não há prazo a informar: a
    virada do dia não o desfaz
    e repetir a chamada não muda nada. O caminho é falar com o seu contato
    comercial.
    Distinga sempre pelo error.code, nunca pelo status sozinho:
    CódigoStatusO que fazer
    RATE_LIMIT_EXCEEDED429Transitório, de segundos. Respeite o Retry-After e repita.
    QUOTA_EXCEEDED429Sua franquia do dia acabou. Volta na virada; para ampliar, fale com o comercial.
    ACCESS_BLOCKED403Acesso bloqueado. Não repita — fale com o comercial.

    Precisa de mais#

    O teto de 100/dia é o padrão, não um limite técnico — quotas maiores são cadastradas por parceiro e
    negociadas com o comercial. Se o seu volume projetado passa do padrão, fale com o seu contato
    comercial antes de ir para produção; o ajuste vale para o parceiro inteiro e entra em vigor em
    poucos minutos, sem nova chave e sem mudança nenhuma na sua integração.
    Para uma necessidade pontual — uma carga de migração, um teste de volume — a liberação pode ser
    temporária, com data de início e fim combinadas.

    O que fazer na sua integração#

    Três hábitos evitam a maior parte dos incidentes de quota:
    1.
    Leia DailyQuota-Remaining e alarme no seu lado quando cruzar um limiar seu (10%, por
    exemplo). Descobrir o teto pelo 429 é descobrir tarde demais.
    2.
    Não repita a mesma abertura em laço. Reenvio automático depois de um 429 gasta o saldo do
    dia seguinte assim que ele abre. Trate QUOTA_EXCEEDED como parada, não como retentativa.
    3.
    Cuidado com a retentativa por timeout. Idempotency-Key impede que ela abra uma segunda
    solicitação, mas não a isenta da quota: o contador fica na borda da plataforma e é decrementado
    antes de a chave ser conferida. Continue usando a chave — ela é o que protege o seu cliente de
    uma duplicata — só não conte com ela para economizar saldo.
    Modificado em 2026-09-01 17:32:30
    Página anterior
    Guia: Originação CLT
    Próxima página
    Changelog e avisos de mudança
    Built with