API das clínicas
O contrato para integrar a clínica.
Esta página é a documentação. Encaminhe o link ao time técnico da clínica. O OpenAPI importa no Postman e no Insomnia.
https://pronto.altis.online/api/v1
Comece aqui
A clínica cadastra os médicos, envia os lotes de planos ou de produtos que ela mesma paga e, quando um médico pede antecipação, confirma a troca do domicílio bancário. A Altis desembolsa só depois dessa confirmação.
Autenticação
A securitizadora autentica com a chave que começa com aps_ (sandbox: aps_test_). Com ela cadastra clínicas. Para médicos, recebíveis e operações, a mesma chave envia o cabeçalho X-Clinica-Id. A chave da clínica, apt_ ou apt_test_, já vale só para aquela clínica. A chave aparece uma vez. Uma chave nova invalida a anterior. Sandbox usa o mesmo contrato, sem e-mail nem SMS.
Authorization: Bearer aps_sua_chave X-Clinica-Id: id_da_clinica
Fluxo
- 01
Cadastre a clínica
No backoffice ou POST /api/v1/clinicas. Clínica não entra no XML de recebíveis.
- 02
Cadastre o médico
No backoffice ou POST /api/v1/medicos com CPF. Médico não entra no XML — o arquivo só referencia o CPF já cadastrado.
- 03
Envie a produção
JSON: POST /api/v1/recebiveis. XML: POST /api/v1/recebiveis/xml no padrão AltisRecebiveis versao=1. Reenviar o mesmo lote atualiza os valores.
- 04
Leia as operações abertas
GET /api/v1/cessoes?status=solicitada. O médico pediu antecipação. O e-mail da clínica avisa a mesma operação.
- 05
Confirme ou recuse
Troque o domicílio para a conta indicada em trava e chame confirmar. Se a troca não puder ser feita, chame recusar.
Convenções
- Dinheiro
- Reais, com decimais. 8420.5 significa R$ 8.420,50. Não envie centavos.
- Datas
- ISO-8601. 2026-11-15 também é aceito no vencimento.
- CPF
- Pode ir com máscara. A resposta devolve 11 dígitos.
- Telefone
- DDD com ou sem +55. A resposta devolve E.164.
- Corpo
- JSON com Content-Type: application/json, ou XML em POST /api/v1/recebiveis/xml com application/xml. Campos desconhecidos no JSON são ignorados.
- XML de recebíveis
- Raiz AltisRecebiveis versao=1. Não envia clínica nem médico: só lotes com Cpf já cadastrado. CNPJ na raiz é opcional para conferência.
- Identificadores
- Opacos. Guarde o id devolvido e use nos caminhos seguintes.
- Paginação
- Enquanto pagina.proximo não for null, repita a chamada com cursor. A ordem é do mais recente para o mais antigo.
- Sincronização
- Guarde o instante da última leitura e passe em atualizadoDesde para receber só o que mudou.
- Reenvio
- Cadastro de médico e envio de lote são upserts pela chave natural. Repetir a mesma chamada é seguro. Confirmar e recusar uma operação também são idempotentes.
- Descoberta
- GET /api/v1 lista os endpoints. GET /api/v1/openapi.json devolve o OpenAPI 3.1 e não pede chave.
- Erro
- Corpo JSON com erro e codigo. Trate pelo codigo: o texto de erro pode mudar. A lista completa está no fim.
Status
Valores possíveis de cada campo de status nas respostas.
Recebível · status
- confirmado
- Auditado pelo pagador. Elegível para antecipação.
- pendente
- Ainda em auditoria. Elegível, e o valor pode mudar no reenvio.
- antecipado
- Entrou numa operação. Definido pela Altis, não pode ser enviado.
- pago
- Liquidado pelo pagador. Definido pela Altis, não pode ser enviado.
Médico · status
- pre_cadastro
- Cadastrado pela clínica. Ainda não ativou o acesso por SMS.
- ativo
- Acesso ativo. Pode pedir antecipação.
Operação · status
- solicitada
- Médico assinou. Aguarda a clínica confirmar ou recusar.
- confirmada
- Domicílio travado. Estado de passagem até o desembolso.
- desembolsada
- Valor líquido pago ao médico. Estado final.
- recusada
- A clínica recusou. Os lotes voltaram à carteira. Estado final.
Operação · trava.status
- pendente
- Troca de domicílio ainda não comunicada.
- email_enviado
- A Altis enviou o pedido de troca por e-mail à clínica.
- travado
- Troca confirmada. trava.canal diz se veio pela API (webhook) ou pelo backoffice (manual).
- recusado
- A clínica recusou a operação.
Clínicas
POST /api/v1/clinicas
Cadastra uma clínica da securitizadora.
Exige a chave da securitizadora, não a da clínica. A clínica nasce vinculada a essa securitizadora e no mesmo ambiente: sandbox gera clínica sandbox. A resposta traz chave uma única vez, para a clínica chamar a API sem a securitizadora. Sem taxaMensal, o padrão é 0.0198. Sem taxaOriginacao e tarifa, o padrão é 0.
| Campo | Tipo | Uso |
|---|---|---|
| nome* | string | Nome da clínica, ao menos 3 caracteres. |
| cnpj* | string | Com ou sem máscara. Precisa ter dígitos verificadores válidos. |
| email* | string | Recebe o pedido de troca de domicílio, fora do sandbox. |
| taxaMensal | number | Fração mensal, por exemplo 0.0198. Maior que 0 e menor que 0.30. |
| taxaOriginacao | number | Fração sobre o valor de face. Entre 0 e 0.30. |
| tarifa | number | Tarifa fixa em reais, por operação. Zero ou mais. |
* obrigatório
Corpo
{
"nome": "Clínica Cardio Leste",
"cnpj": "00000000000191",
"email": "financeiro@cardio.com.br",
"taxaMensal": 0.0198,
"taxaOriginacao": 0.015,
"tarifa": 25
}Resposta 201
{
"id": "cm9clinica",
"nome": "Clínica Cardio Leste",
"cnpj": "00000000000191",
"email": "financeiro@cardio.com.br",
"sandbox": false,
"taxaMensal": 0.0198,
"taxaOriginacao": 0.015,
"tarifa": 25,
"criadoEm": "2026-09-30T18:00:00.000Z",
"atualizadoEm": "2026-09-30T18:00:00.000Z",
"chave": "apt_sua_chave"
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 nome_invalido
- 400 cnpj_invalido
- 400 email_invalido
- 400 preco_invalido
- 409 cnpj_duplicado
curl -sS -X POST https://pronto.altis.online/api/v1/clinicas \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"nome":"Clínica Cardio Leste","cnpj":"00000000000191","email":"financeiro@cardio.com.br","taxaMensal":0.0198,"taxaOriginacao":0.015,"tarifa":25}'GET /api/v1/clinicas
Lista as clínicas desta securitizadora.
Só devolve clínicas vinculadas à chave. A chave da clínica não aparece de novo.
| Parâmetro | Onde | Uso |
|---|---|---|
| limite | query | Itens por página. Padrão 50, máximo 100. |
| cursor | query | Passe o pagina.proximo da resposta anterior. Opaco. |
| atualizadoDesde | query | ISO-8601. Devolve só o que mudou a partir deste instante. |
Resposta 200
{
"clinicas": [
{
"id": "cm9clinica",
"nome": "Clínica Cardio Leste",
"cnpj": "00000000000191",
"email": "financeiro@cardio.com.br",
"sandbox": false,
"taxaMensal": 0.0198,
"taxaOriginacao": 0.015,
"tarifa": 25,
"criadoEm": "2026-09-30T18:00:00.000Z",
"atualizadoEm": "2026-09-30T18:00:00.000Z"
}
],
"pagina": {
"limite": 50,
"proximo": null
}
}Erros
- 401 nao_autorizado
- 400 limite_invalido
- 400 data_invalida
- 400 cursor_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/clinicas \ -H "Authorization: Bearer $ALTIS_API_KEY"
GET /api/v1/clinicas/{id}
Detalhe de uma clínica.
Um id de outra securitizadora responde 404.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco da clínica. |
Resposta 200
{
"id": "cm9clinica",
"nome": "Clínica Cardio Leste",
"cnpj": "00000000000191",
"email": "financeiro@cardio.com.br",
"sandbox": false,
"taxaMensal": 0.0198,
"taxaOriginacao": 0.015,
"tarifa": 25,
"criadoEm": "2026-09-30T18:00:00.000Z",
"atualizadoEm": "2026-09-30T18:00:00.000Z"
}Erros
- 401 nao_autorizado
- 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/clinicas/ID \ -H "Authorization: Bearer $ALTIS_API_KEY"
PATCH /api/v1/clinicas/{id}
Atualiza nome, e-mail ou preço.
Envie só o que muda. O preço vale para as próximas operações. Operações já abertas mantêm o preço contratado. Não troca o ambiente nem o CNPJ.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco da clínica. |
| Campo | Tipo | Uso |
|---|---|---|
| nome | string | Nome da clínica, ao menos 3 caracteres. |
| string | E-mail de contato. | |
| taxaMensal | number | Fração mensal, por exemplo 0.0198. |
| taxaOriginacao | number | Fração sobre o valor de face. |
| tarifa | number | Tarifa fixa em reais. |
* obrigatório
Corpo
{
"taxaMensal": 0.021
}Resposta 200
{
"id": "cm9clinica",
"nome": "Clínica Cardio Leste",
"cnpj": "00000000000191",
"email": "financeiro@cardio.com.br",
"sandbox": false,
"taxaMensal": 0.021,
"taxaOriginacao": 0.015,
"tarifa": 25,
"criadoEm": "2026-09-30T18:00:00.000Z",
"atualizadoEm": "2026-09-30T18:10:00.000Z"
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 preco_invalido
- 404 nao_encontrado
curl -sS -X PATCH https://pronto.altis.online/api/v1/clinicas/ID \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"taxaMensal":0.021}'Planos
GET /api/v1/convenios
Catálogo de planos aceitos.
Use o campo codigo em convenio ao enviar um recebível de plano. A clínica não cadastra plano novo por esta API. Produto pago pela própria clínica, como uma consulta, não entra neste catálogo: envie o código no recebível.
Resposta 200
{
"convenios": [
{
"codigo": "unimed",
"nome": "Unimed",
"sigla": "UN",
"prazoMedioPagamentoDias": 45
},
{
"codigo": "amil",
"nome": "Amil",
"sigla": "AM",
"prazoMedioPagamentoDias": 60
}
]
}Erros
- 401 nao_autorizado
curl -sS -X GET https://pronto.altis.online/api/v1/convenios \ -H "Authorization: Bearer $ALTIS_API_KEY"
Médicos
POST /api/v1/medicos
Cadastra ou atualiza um médico.
A chave é o CPF dentro da clínica. O primeiro envio responde 201. O mesmo CPF enviado de novo responde 200 e atualiza nome, telefone e só os campos opcionais presentes no corpo: um campo omitido mantém o valor gravado. Sem chavePix no primeiro envio, a chave Pix passa a ser o CPF. O médico completa o acesso no aplicativo com o código SMS. Enquanto o status for pre_cadastro ele ainda não antecipa.
| Campo | Tipo | Uso |
|---|---|---|
| cpf* | string | Com ou sem máscara. Precisa ter dígitos verificadores válidos. |
| nome* | string | Nome completo, ao menos 3 caracteres. |
| telefone* | string | Celular com DDD, com ou sem +55. Recebe o SMS de ativação. |
| string | E-mail do médico. | |
| crm | string | Número e UF, por exemplo 123456-SP. Vai para o contrato de cessão. |
| especialidade | string | Texto livre. |
| limite | number | Limite total de antecipação em reais. Padrão 0 no cadastro; com 0 o médico não antecipa. |
| banco | string | Nome do banco da conta do médico. |
| codigoBanco | string | Código COMPE, por exemplo 341. |
| agencia | string | Agência, sem dígito. |
| conta | string | Conta com dígito. |
| tipoChavePix | string | CPF, E-mail, Telefone ou Aleatória. Padrão CPF. |
| chavePix | string | Chave que recebe o desembolso. Padrão: o CPF. |
* obrigatório
Corpo
{
"cpf": "529.982.247-25",
"nome": "Ana Lima",
"telefone": "11999998888",
"email": "ana.lima@clinica.com.br",
"crm": "123456-SP",
"especialidade": "Cardiologia",
"limite": 50000,
"banco": "Itaú",
"codigoBanco": "341",
"agencia": "1234",
"conta": "56789-0",
"tipoChavePix": "CPF",
"chavePix": "52998224725"
}Resposta 201
{
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"telefone": "+5511999998888",
"email": "ana.lima@clinica.com.br",
"crm": "123456-SP",
"especialidade": "Cardiologia",
"status": "pre_cadastro",
"cadastroCompletoEm": null,
"limite": 50000,
"limiteUsado": 0,
"conta": {
"banco": "Itaú",
"codigoBanco": "341",
"agencia": "1234",
"conta": "56789-0",
"tipoChavePix": "CPF",
"chavePix": "52998224725"
},
"criadoEm": "2026-09-22T18:04:00.000Z",
"atualizadoEm": "2026-09-22T18:04:00.000Z"
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 cpf_invalido
- 400 telefone_invalido
- 400 nome_invalido
- 400 limite_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/medicos \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cpf":"529.982.247-25","nome":"Ana Lima","telefone":"11999998888","email":"ana.lima@clinica.com.br","crm":"123456-SP","especialidade":"Cardiologia","limite":50000,"banco":"Itaú","codigoBanco":"341","agencia":"1234","conta":"56789-0","tipoChavePix":"CPF","chavePix":"52998224725"}'GET /api/v1/medicos
Lista os médicos da clínica.
Filtre por CPF para buscar um médico sem guardar o id. limiteUsado soma as operações que não foram recusadas.
| Parâmetro | Onde | Uso |
|---|---|---|
| limite | query | Itens por página. Padrão 50, máximo 100. |
| cursor | query | Passe o pagina.proximo da resposta anterior. Opaco. |
| atualizadoDesde | query | ISO-8601. Devolve só o que mudou a partir deste instante. |
| cpf | query | CPF com ou sem máscara. |
| status | query | pre_cadastro ou ativo. |
Resposta 200
{
"medicos": [
{
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"telefone": "+5511999998888",
"email": "ana.lima@clinica.com.br",
"crm": "123456-SP",
"especialidade": "Cardiologia",
"status": "pre_cadastro",
"cadastroCompletoEm": null,
"limite": 50000,
"limiteUsado": 0,
"conta": {
"banco": "Itaú",
"codigoBanco": "341",
"agencia": "1234",
"conta": "56789-0",
"tipoChavePix": "CPF",
"chavePix": "52998224725"
},
"criadoEm": "2026-09-22T18:04:00.000Z",
"atualizadoEm": "2026-09-22T18:04:00.000Z"
}
],
"pagina": {
"limite": 50,
"proximo": null
}
}Erros
- 401 nao_autorizado
- 400 limite_invalido
- 400 data_invalida
- 400 cursor_invalido
- 400 cpf_invalido
- 400 status_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/medicos \ -H "Authorization: Bearer $ALTIS_API_KEY"
GET /api/v1/medicos/{id}
Detalhe de um médico.
O id vem da resposta do cadastro. Um id de outra clínica responde 404.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco do médico. |
Resposta 200
{
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"telefone": "+5511999998888",
"email": "ana.lima@clinica.com.br",
"crm": "123456-SP",
"especialidade": "Cardiologia",
"status": "pre_cadastro",
"cadastroCompletoEm": null,
"limite": 50000,
"limiteUsado": 0,
"conta": {
"banco": "Itaú",
"codigoBanco": "341",
"agencia": "1234",
"conta": "56789-0",
"tipoChavePix": "CPF",
"chavePix": "52998224725"
},
"criadoEm": "2026-09-22T18:04:00.000Z",
"atualizadoEm": "2026-09-22T18:04:00.000Z"
}Erros
- 401 nao_autorizado
- 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/medicos/ID \ -H "Authorization: Bearer $ALTIS_API_KEY"
Recebíveis
POST /api/v1/recebiveis
Envia um lote ou uma lista de lotes.
Aceita um objeto ou uma lista de até 500 objetos. A chave do lote é clínica + médico + lote + competência. Reenviar atualiza valores. Se o corpo incluir procedimentos, a lista anterior desse lote é substituída; sem procedimentos, a lista gravada fica como está. O envio é atômico: ou todos os itens entram, ou nenhum. Numa lista, a mensagem de erro começa com Item N para indicar qual item falhou. Responde 201 quando todos os itens são novos e 200 quando ao menos um já existia; cada item traz criado true ou false. Um lote já vinculado a uma operação responde 409. Valores em reais. Status aceitos no envio: confirmado e pendente, ambos elegíveis para antecipação. antecipado e pago são definidos pela Altis. Cada lote tem uma origem. Para um plano, envie convenio com o código do catálogo. Para um produto pago pela clínica, envie produto e, se quiser, produtoNome — por exemplo produto consulta e produtoNome Consulta. origem pode ser plano ou produto; se omitida, a Altis infere pelo campo enviado. Informe um dos dois, não os dois.
| Campo | Tipo | Uso |
|---|---|---|
| cpf* | string | CPF de um médico já cadastrado nesta clínica. |
| origem | string | Se omitida, vem de convenio ou produto.plano · produto |
| convenio | string | Código do catálogo de planos. Obrigatório quando a origem é plano. |
| produto | string | Código do produto: letras, números e hífen. Obrigatório quando a origem é produto. |
| produtoNome | string | Nome exibido ao médico. Padrão: derivado do código. |
| lote* | string | Código do lote na clínica. |
| competencia* | string | Mês de referência no formato AAAA-MM. |
| vencimento* | string | Data prevista de pagamento pelo pagador. AAAA-MM-DD ou ISO-8601. |
| valorBruto* | number | Valor faturado do lote em reais. Maior que zero. O líquido do lote é igual ao bruto. |
| status | string | Padrão confirmado.confirmado · pendente |
| procedimentos | array | Composição do lote. Substitui a lista anterior quando enviada. |
| procedimentos[].descricao | string | Padrão Procedimento. |
| procedimentos[].codigoTuss | string | Código TUSS. |
| procedimentos[].data | string | Data do atendimento. Padrão: o vencimento do lote. |
| procedimentos[].quantidade | integer | Inteiro maior que zero. Padrão 1. |
| procedimentos[].valorUnitario | number | Em reais. Padrão 0. |
* obrigatório
Corpo
{
"cpf": "52998224725",
"origem": "plano",
"convenio": "unimed",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"vencimento": "2026-11-15",
"valorBruto": 8420.5,
"status": "confirmado",
"procedimentos": [
{
"descricao": "Consulta em consultório",
"codigoTuss": "10101012",
"data": "2026-09-03",
"quantidade": 1,
"valorUnitario": 8420.5
}
]
}Resposta 201
{
"recebiveis": [
{
"id": "cm9receb014",
"medicoId": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"convenioNome": "Unimed",
"produto": null,
"produtoNome": null,
"vencimento": "2026-11-15T00:00:00.000Z",
"valorBruto": 8420.5,
"valorLiquido": 8420.5,
"status": "confirmado",
"elegivel": true,
"motivoInelegivel": null,
"cessaoId": null,
"criadoEm": "2026-09-22T18:10:00.000Z",
"atualizadoEm": "2026-09-22T18:10:00.000Z",
"procedimentos": [
{
"id": "cm9proc014",
"descricao": "Consulta em consultório",
"codigoTuss": "10101012",
"data": "2026-09-03T00:00:00.000Z",
"quantidade": 1,
"valorUnitario": 8420.5
}
],
"criado": true
}
]
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 vazio
- 400 muitos_itens
- 400 cpf_invalido
- 404 medico_nao_encontrado
- 400 origem_invalida
- 400 convenio_invalido
- 400 produto_invalido
- 400 lote_invalido
- 400 valor_invalido
- 400 procedimento_invalido
- 400 status_invalido
- 409 lote_vinculado
curl -sS -X POST https://pronto.altis.online/api/v1/recebiveis \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cpf":"52998224725","origem":"plano","convenio":"unimed","lote":"UN-2026-09-014","competencia":"2026-09","vencimento":"2026-11-15","valorBruto":8420.5,"status":"confirmado","procedimentos":[{"descricao":"Consulta em consultório","codigoTuss":"10101012","data":"2026-09-03","quantidade":1,"valorUnitario":8420.5}]}'POST /api/v1/recebiveis/xml
Importa lotes no padrão XML v1.
Use quando a clínica exporta produção em arquivo. Clínica e médicos não vão no XML: cadastre-os antes no backoffice ou pela API. A clínica autenticada pela chave é o destino. Cada Recebivel aponta o médico pelo Cpf já cadastrado. Atributo cnpj na raiz é opcional e, se vier, precisa bater com o CNPJ da clínica. Mesmas regras do envio JSON: chave lote+competência, upsert, até 500 itens, atômico. Content-Type: application/xml ou text/xml. Valores aceitam ponto (8420.50) ou vírgula (8420,50).
| Campo | Tipo | Uso |
|---|---|---|
| AltisRecebiveis@versao* | string | Sempre "1". |
| AltisRecebiveis@cnpj | string | Conferência opcional com a clínica autenticada. |
| Recebivel.Cpf* | string | CPF de médico já cadastrado nesta clínica. |
| Recebivel.Origem | string | plano ou produto. Se omitida, infere por Convenio ou Produto.plano · produto |
| Recebivel.Convenio | string | Código do plano. Exclusivo com Produto. |
| Recebivel.Produto | string | Código do produto pago pela clínica. Exclusivo com Convenio. |
| Recebivel.ProdutoNome | string | Nome exibido. Padrão derivado do código. |
| Recebivel.Lote* | string | Código do lote na clínica. |
| Recebivel.Competencia* | string | AAAA-MM. |
| Recebivel.Vencimento* | string | AAAA-MM-DD ou ISO-8601. |
| Recebivel.ValorBruto* | number | Em reais. Ponto ou vírgula decimal. |
| Recebivel.Status | string | Padrão confirmado.confirmado · pendente |
| Procedimento.Descricao | string | Padrão Procedimento. |
| Procedimento.CodigoTuss | string | Código TUSS. |
| Procedimento.Data | string | Data do atendimento. |
| Procedimento.Quantidade | integer | Padrão 1. |
| Procedimento.ValorUnitario | number | Em reais. |
* obrigatório
Corpo
<?xml version="1.0" encoding="UTF-8"?>
<AltisRecebiveis versao="1" cnpj="45567890000156">
<Recebivel>
<Cpf>52998224725</Cpf>
<Origem>plano</Origem>
<Convenio>unimed</Convenio>
<Lote>UN-2026-09-014</Lote>
<Competencia>2026-09</Competencia>
<Vencimento>2026-11-15</Vencimento>
<ValorBruto>8420.50</ValorBruto>
<Status>confirmado</Status>
<Procedimentos>
<Procedimento>
<Descricao>Consulta em consultório</Descricao>
<CodigoTuss>10101012</CodigoTuss>
<Data>2026-09-03</Data>
<Quantidade>1</Quantidade>
<ValorUnitario>8420.50</ValorUnitario>
</Procedimento>
</Procedimentos>
</Recebivel>
</AltisRecebiveis>Resposta 201
{
"recebiveis": [
{
"id": "cm9receb014",
"medicoId": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"convenioNome": "Unimed",
"produto": null,
"produtoNome": null,
"vencimento": "2026-11-15T00:00:00.000Z",
"valorBruto": 8420.5,
"valorLiquido": 8420.5,
"status": "confirmado",
"elegivel": true,
"motivoInelegivel": null,
"cessaoId": null,
"criadoEm": "2026-09-22T18:10:00.000Z",
"atualizadoEm": "2026-09-22T18:10:00.000Z",
"procedimentos": [
{
"id": "cm9proc014",
"descricao": "Consulta em consultório",
"codigoTuss": "10101012",
"data": "2026-09-03T00:00:00.000Z",
"quantidade": 1,
"valorUnitario": 8420.5
}
],
"criado": true
}
]
}Erros
- 401 nao_autorizado
- 400 xml_invalido
- 400 vazio
- 400 muitos_itens
- 400 cnpj_invalido
- 400 cpf_invalido
- 404 medico_nao_encontrado
- 400 origem_invalida
- 400 convenio_invalido
- 400 produto_invalido
- 400 lote_invalido
- 400 valor_invalido
- 400 procedimento_invalido
- 400 status_invalido
- 409 lote_vinculado
curl -sS -X POST https://pronto.altis.online/api/v1/recebiveis/xml \ -H "Authorization: Bearer $ALTIS_API_KEY" \ -H "Content-Type: application/xml" \ --data-binary @recebiveis.xml
GET /api/v1/recebiveis
Lista os lotes já recebidos.
A listagem não traz os procedimentos. Use o detalhe para a composição do lote. cessaoId preenchido significa que o lote já foi antecipado.
| Parâmetro | Onde | Uso |
|---|---|---|
| limite | query | Itens por página. Padrão 50, máximo 100. |
| cursor | query | Passe o pagina.proximo da resposta anterior. Opaco. |
| atualizadoDesde | query | ISO-8601. Devolve só o que mudou a partir deste instante. |
| cpf | query | CPF do médico. |
| status | query | confirmado, pendente, antecipado ou pago. |
| lote | query | Código exato do lote. |
| competencia | query | Competência gravada, por exemplo 2026-09. |
| origem | query | plano ou produto. |
Resposta 200
{
"recebiveis": [
{
"id": "cm9receb014",
"medicoId": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"convenioNome": "Unimed",
"produto": null,
"produtoNome": null,
"vencimento": "2026-11-15T00:00:00.000Z",
"valorBruto": 8420.5,
"valorLiquido": 8420.5,
"status": "confirmado",
"elegivel": true,
"motivoInelegivel": null,
"cessaoId": null,
"criadoEm": "2026-09-22T18:10:00.000Z",
"atualizadoEm": "2026-09-22T18:10:00.000Z"
}
],
"pagina": {
"limite": 50,
"proximo": null
}
}Erros
- 401 nao_autorizado
- 400 limite_invalido
- 400 data_invalida
- 400 cursor_invalido
- 400 cpf_invalido
- 400 status_invalido
- 400 origem_invalida
curl -sS -X GET https://pronto.altis.online/api/v1/recebiveis \ -H "Authorization: Bearer $ALTIS_API_KEY"
GET /api/v1/recebiveis/{id}
Detalhe de um lote, com procedimentos.
Devolve a composição enviada pela clínica.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco do recebível. |
Resposta 200
{
"id": "cm9receb014",
"medicoId": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"convenioNome": "Unimed",
"produto": null,
"produtoNome": null,
"vencimento": "2026-11-15T00:00:00.000Z",
"valorBruto": 8420.5,
"valorLiquido": 8420.5,
"status": "confirmado",
"elegivel": true,
"motivoInelegivel": null,
"cessaoId": null,
"criadoEm": "2026-09-22T18:10:00.000Z",
"atualizadoEm": "2026-09-22T18:10:00.000Z",
"procedimentos": [
{
"id": "cm9proc014",
"descricao": "Consulta em consultório",
"codigoTuss": "10101012",
"data": "2026-09-03T00:00:00.000Z",
"quantidade": 1,
"valorUnitario": 8420.5
}
]
}Erros
- 401 nao_autorizado
- 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/recebiveis/ID \ -H "Authorization: Bearer $ALTIS_API_KEY"
DELETE /api/v1/recebiveis/{id}
Remove um lote enviado por engano.
Responde 204 sem corpo. Se o lote já entrou numa operação, responde 409 e o registro permanece.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco do recebível. |
Resposta 204, sem corpo.
Erros
- 401 nao_autorizado
- 404 nao_encontrado
- 409 lote_vinculado
curl -sS -X DELETE https://pronto.altis.online/api/v1/recebiveis/ID \ -H "Authorization: Bearer $ALTIS_API_KEY"
Operações
GET /api/v1/cessoes
Lista as antecipações pedidas pelos médicos.
Consulte status=solicitada para achar o que ainda precisa de troca de domicílio. A Altis também avisa por e-mail. A clínica confirma ou recusa por esta API. status possíveis: solicitada, confirmada, desembolsada, recusada.
| Parâmetro | Onde | Uso |
|---|---|---|
| limite | query | Itens por página. Padrão 50, máximo 100. |
| cursor | query | Passe o pagina.proximo da resposta anterior. Opaco. |
| atualizadoDesde | query | ISO-8601. Devolve só o que mudou a partir deste instante. |
| status | query | solicitada, confirmada, desembolsada ou recusada. |
| cpf | query | CPF do médico. |
Resposta 200
{
"cessoes": [
{
"id": "cm9cessao918",
"numeroContrato": "ANT 2026.5918",
"status": "solicitada",
"medico": {
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima"
},
"valorBruto": 8420.5,
"desconto": 312.4,
"tarifa": 148.61,
"tarifaFixa": 25,
"taxaOriginacao": 0.015,
"valorLiquido": 7959.49,
"taxaMensal": 0.0198,
"cetAnual": 0.265,
"prazoMedioDias": 54,
"chavePix": "52998224725",
"contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
"criadaEm": "2026-09-22T19:02:00.000Z",
"confirmadaEm": null,
"desembolsadaEm": null,
"lotes": [
{
"id": "cm9receb014",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"produto": null,
"produtoNome": null,
"valorLiquido": 8420.5
}
],
"trava": {
"status": "email_enviado",
"canal": null,
"protocolo": null,
"autorizadoPor": null,
"crm": null,
"autorizadoEm": null,
"bancoDestino": "Banco da Altis",
"agenciaDestino": "0001",
"contaDestino": "12345-6",
"pixDestino": "00.000.000/0001-00"
},
"eventos": [
{
"status": "solicitada",
"titulo": "Solicitação recebida",
"descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
"em": "2026-09-22T19:02:00.000Z"
}
]
}
],
"pagina": {
"limite": 50,
"proximo": null
}
}Erros
- 401 nao_autorizado
- 400 limite_invalido
- 400 data_invalida
- 400 cursor_invalido
- 400 cpf_invalido
- 400 status_invalido
curl -sS -X GET https://pronto.altis.online/api/v1/cessoes \ -H "Authorization: Bearer $ALTIS_API_KEY"
GET /api/v1/cessoes/{id}
Detalhe da operação, dos lotes e da trava de domicílio.
trava.bancoDestino, agenciaDestino, contaDestino e pixDestino são a conta para a qual a produção deve passar a ser paga. tarifa é o total da originação nesta operação. tarifaFixa e taxaOriginacao são o preço da clínica no momento da assinatura: a parte fixa em reais e o percentual do valor de face. contrato é o termo assinado.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco da operação. |
Resposta 200
{
"id": "cm9cessao918",
"numeroContrato": "ANT 2026.5918",
"status": "solicitada",
"medico": {
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima"
},
"valorBruto": 8420.5,
"desconto": 312.4,
"tarifa": 148.61,
"tarifaFixa": 25,
"taxaOriginacao": 0.015,
"valorLiquido": 7959.49,
"taxaMensal": 0.0198,
"cetAnual": 0.265,
"prazoMedioDias": 54,
"chavePix": "52998224725",
"contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
"criadaEm": "2026-09-22T19:02:00.000Z",
"confirmadaEm": null,
"desembolsadaEm": null,
"lotes": [
{
"id": "cm9receb014",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"produto": null,
"produtoNome": null,
"valorLiquido": 8420.5
}
],
"trava": {
"status": "email_enviado",
"canal": null,
"protocolo": null,
"autorizadoPor": null,
"crm": null,
"autorizadoEm": null,
"bancoDestino": "Banco da Altis",
"agenciaDestino": "0001",
"contaDestino": "12345-6",
"pixDestino": "00.000.000/0001-00"
},
"eventos": [
{
"status": "solicitada",
"titulo": "Solicitação recebida",
"descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
"em": "2026-09-22T19:02:00.000Z"
}
]
}Erros
- 401 nao_autorizado
- 404 nao_encontrado
curl -sS -X GET https://pronto.altis.online/api/v1/cessoes/ID \ -H "Authorization: Bearer $ALTIS_API_KEY"
POST /api/v1/cessoes/{id}/confirmar
Confirma a troca de domicílio e registra o desembolso.
Chame depois de alterar o domicílio bancário da produção para a conta da Altis. Uma segunda chamada da mesma operação já desembolsada devolve o mesmo registro e não paga de novo. Protocolo, nome de quem autorizou e CRM são obrigatórios.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco da operação. |
| Campo | Tipo | Uso |
|---|---|---|
| protocolo* | string | Protocolo da troca de domicílio no banco ou no pagador. |
| autorizadoPor* | string | Nome de quem autorizou a troca na clínica. |
| crm* | string | CRM de quem autorizou. |
* obrigatório
Corpo
{
"protocolo": "DOM-2026-00421",
"autorizadoPor": "Carlos Mendes",
"crm": "654321-SP"
}Resposta 200
{
"id": "cm9cessao918",
"numeroContrato": "ANT 2026.5918",
"status": "desembolsada",
"medico": {
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima"
},
"valorBruto": 8420.5,
"desconto": 312.4,
"tarifa": 148.61,
"tarifaFixa": 25,
"taxaOriginacao": 0.015,
"valorLiquido": 7959.49,
"taxaMensal": 0.0198,
"cetAnual": 0.265,
"prazoMedioDias": 54,
"chavePix": "52998224725",
"contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
"criadaEm": "2026-09-22T19:02:00.000Z",
"confirmadaEm": "2026-09-22T20:15:00.000Z",
"desembolsadaEm": "2026-09-22T20:15:00.000Z",
"lotes": [
{
"id": "cm9receb014",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"produto": null,
"produtoNome": null,
"valorLiquido": 8420.5
}
],
"trava": {
"status": "email_enviado",
"canal": null,
"protocolo": null,
"autorizadoPor": null,
"crm": null,
"autorizadoEm": null,
"bancoDestino": "Banco da Altis",
"agenciaDestino": "0001",
"contaDestino": "12345-6",
"pixDestino": "00.000.000/0001-00"
},
"eventos": [
{
"status": "solicitada",
"titulo": "Solicitação recebida",
"descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
"em": "2026-09-22T19:02:00.000Z"
}
]
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 autorizacao_incompleta
- 404 nao_encontrado
- 409 status_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/cessoes/ID/confirmar \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"protocolo":"DOM-2026-00421","autorizadoPor":"Carlos Mendes","crm":"654321-SP"}'POST /api/v1/cessoes/{id}/recusar
Recusa a operação e devolve os lotes à carteira.
Use quando o médico não autorizar a troca de domicílio. Os lotes voltam a confirmado e elegível. Uma operação já desembolsada não pode ser recusada. Repetir a recusa devolve o mesmo registro.
| Parâmetro | Onde | Uso |
|---|---|---|
| id | path | Identificador opaco da operação. |
| Campo | Tipo | Uso |
|---|---|---|
| motivo* | string | Ao menos 3 caracteres. Vira o evento da operação. |
* obrigatório
Corpo
{
"motivo": "Médico não autorizou a troca de domicílio."
}Resposta 200
{
"id": "cm9cessao918",
"numeroContrato": "ANT 2026.5918",
"status": "recusada",
"medico": {
"id": "cm9medicoana",
"cpf": "52998224725",
"nome": "Ana Lima"
},
"valorBruto": 8420.5,
"desconto": 312.4,
"tarifa": 148.61,
"tarifaFixa": 25,
"taxaOriginacao": 0.015,
"valorLiquido": 7959.49,
"taxaMensal": 0.0198,
"cetAnual": 0.265,
"prazoMedioDias": 54,
"chavePix": "52998224725",
"contrato": "INSTRUMENTO PARTICULAR DE CESSÃO DE CRÉDITOS E OUTRAS AVENÇAS\nInstrumento nº ANT 2026.5918...",
"criadaEm": "2026-09-22T19:02:00.000Z",
"confirmadaEm": null,
"desembolsadaEm": null,
"lotes": [
{
"id": "cm9receb014",
"lote": "UN-2026-09-014",
"competencia": "2026-09",
"origem": "plano",
"pagador": "Unimed",
"convenio": "unimed",
"produto": null,
"produtoNome": null,
"valorLiquido": 8420.5
}
],
"trava": {
"status": "email_enviado",
"canal": null,
"protocolo": null,
"autorizadoPor": null,
"crm": null,
"autorizadoEm": null,
"bancoDestino": "Banco da Altis",
"agenciaDestino": "0001",
"contaDestino": "12345-6",
"pixDestino": "00.000.000/0001-00"
},
"eventos": [
{
"status": "solicitada",
"titulo": "Solicitação recebida",
"descricao": "Contrato assinado. Aguardando a clínica confirmar a troca de domicílio bancário.",
"em": "2026-09-22T19:02:00.000Z"
}
]
}Erros
- 401 nao_autorizado
- 400 json_invalido
- 400 motivo_invalido
- 404 nao_encontrado
- 409 status_invalido
curl -sS -X POST https://pronto.altis.online/api/v1/cessoes/ID/recusar \
-H "Authorization: Bearer $ALTIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"motivo":"Médico não autorizou a troca de domicílio."}'Erros
Falha de negócio responde com JSON. Não há página HTML no erro.
{
"erro": "Chave de API inválida.",
"codigo": "nao_autorizado"
}| Status | Código | Quando |
|---|---|---|
| 400 | cpf_invalido | CPF ausente ou com dígitos verificadores inválidos. |
| 400 | telefone_invalido | Telefone ausente ou fora do formato brasileiro. |
| 400 | nome_invalido | Nome com menos de 3 caracteres. |
| 400 | limite_invalido | Limite negativo ou parâmetro limite da listagem inválido. |
| 400 | convenio_invalido | Código de plano fora do catálogo. |
| 400 | produto_invalido | Código de produto ausente ou fora do formato (letras, números e hífen). |
| 400 | origem_invalida | Faltou a origem, vieram plano e produto juntos, ou origem fora de plano e produto. |
| 400 | lote_invalido | Lote, competência ou vencimento ausente. |
| 400 | valor_invalido | Valor bruto ausente, zero, negativo ou não numérico. |
| 400 | procedimento_invalido | procedimentos não é lista, ou um item tem quantidade ou valor unitário inválidos. |
| 400 | status_invalido | Status fora da lista aceita naquele recurso. No envio de recebível, só confirmado ou pendente. |
| 400 | data_invalida | atualizadoDesde não é uma data ISO-8601. |
| 400 | cursor_invalido | O cursor de paginação não existe. |
| 400 | json_invalido | Corpo ausente, JSON malformado ou com formato diferente do esperado. |
| 400 | xml_invalido | Corpo XML ausente, raiz diferente de AltisRecebiveis, ou versão diferente de 1. |
| 400 | vazio | A lista de recebíveis veio vazia. |
| 400 | muitos_itens | Mais de 500 recebíveis numa só chamada. |
| 400 | autorizacao_incompleta | Confirmação sem protocolo, autorizador ou CRM. |
| 400 | motivo_invalido | Recusa sem um motivo. |
| 400 | cnpj_invalido | CNPJ ausente, inválido ou diferente da clínica autenticada (atributo cnpj no XML). |
| 400 | email_invalido | E-mail de contato da clínica ausente ou sem @. |
| 400 | preco_invalido | Taxa mensal, originação ou tarifa fora do intervalo. Taxa mensal em fração, por exemplo 0.0198. |
| 400 | clinica_obrigatoria | A chave é da securitizadora e faltou o cabeçalho X-Clinica-Id. |
| 401 | nao_autorizado | Chave ausente ou inválida. |
| 404 | nao_encontrado | O id não existe nesta clínica. |
| 404 | medico_nao_encontrado | O CPF ainda não foi cadastrado nesta clínica. |
| 409 | cnpj_duplicado | Já existe clínica ou securitizadora com este CNPJ neste ambiente. |
| 409 | lote_vinculado | O lote já entrou numa operação e não pode ser alterado nem apagado. |
| 409 | status_invalido | A operação já foi desembolsada ou recusada e a ação não cabe mais. |
| 500 | erro_interno | Falha inesperada. O corpo traz codigo erro_interno. |