OpenAPI 3.1.0 · versão 1.1.0

Referência da API Prescri (20 operações)

A especificação completa da API em uma página navegável: cada endpoint com autenticação, parâmetros, corpo da requisição, respostas e um exemplo de cURL pronto para copiar. O arquivo openapi.json está disponível para download, importação no Postman ou geração de clientes.

Assinaturas de documentos

post/api-signatures-create

Criar assinatura

Envia o PDF (base64 ou URL) e inicia a assinatura ICP-Brasil. Serve para receitas, notificações SNCR (azul/amarela, com sncr_reservation_token) e qualquer outro PDF (laudo, termo de consentimento, contrato). Com session_id ativo, o documento volta já assinado.

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

CampoTipoDescrição
provider*"birdid" | "vidaas"—
doctor_cpf*string11 dígitos
doctor_full_namestring—
doctor_crmstring—
doctor_crm_ufstring—
doctor_specialtystring—
doctor_emailstring · email—
doctor_phonestring—
pdf_base64stringUse pdf_base64 OU pdf_url, nunca ambos
pdf_urlstring · uri—
document_typestring—
prescription_type_idstring · uuid—
external_idstring—
external_metadataobject—
webhook_urlstring · uri—
redirect_urlstring · uri—
session_idstring · uuid—
patientobject—
patient.full_name*string—
patient.cpf*string11 dígitos
patient.phonestring—
stamp_optionsobject—
stamp_options.position"top-left" | "top-right" | "bottom-left" | "bottom-right"—
stamp_options.marginXnumber—
stamp_options.marginYnumber—
stamp_options.qrSizenumber—
sncr_reservation_tokenstringToken de pré-reserva obtido em POST /api-sncr-reserve (opcional). Usa o número já reservado em vez de consumir um novo.
sncr_stampobjectOpcional. Quando presente, a Prescri desenha o quadro "NUMERAÇÃO SNCR" no PDF enviado, antes da assinatura. Sem este objeto o PDF segue inalterado (comportamento legado).
sncr_stamp.position"top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center" | "custom"—
sncr_stamp.xnumberSomente com position=custom. Pontos a partir da borda esquerda.
sncr_stamp.ynumberSomente com position=custom. Pontos a partir do topo.
sncr_stamp.marginXnumber—
sncr_stamp.marginYnumber—
sncr_stamp.page—first (padrão), last, all ou o número da página.
sncr_stamp.widthnumber—
sncr_stamp.ufstringUF impressa no quadro. Padrão: doctor_crm_uf.
documentobjectOpcional. Gera o PDF no modelo Prescri (logo, paciente, texto e/ou itens) em vez de enviar pdf_base64/pdf_url. Exige title e body ou items.
document.title*string—
document.bodystring—
document.itemsobject[]—
document.observationsstring—
document.cid10string—
document.citystring—
document.ufstring—
document.brandingobject—
branding.logo_urlstring—
branding.logo_base64string—
branding.logo_position"left" | "right"—
branding.clinic_namestring—
branding.clinic_cnesstringCNES do estabelecimento (rodapé). Se omitido, usa o CNES cadastrado na empresa.
branding.clinic_cnpjstringCNPJ (só dígitos ou formatado; rodapé). Se omitido, usa o CNPJ cadastrado na empresa. Médico autônomo pode omitir.
branding.clinic_phonestringTelefone de contato (rodapé).
branding.clinic_addressstring—
document.patientobject—
patient.namestring—
patient.cpfstring—
patient.birth_datestring—
patient.genderstring—
patient.addressstring—
application/json
{
  "provider": "birdid",
  "doctor_cpf": "12345678901",
  "doctor_full_name": "Dra. Ana Souza",
  "doctor_crm": "123456",
  "doctor_crm_uf": "SP",
  "pdf_url": "https://seusistema.com/receita.pdf",
  "document_type": "Receituário Médico",
  "webhook_url": "https://seusistema.com/webhooks/prescri",
  "patient": {
    "full_name": "João da Silva",
    "cpf": "98765432100",
    "phone": "5511999998888"
  }
}

Respostas

201Assinatura criada
400Requisição inválida
401Credenciais inválidas
402Pagamento necessário. code=doctor_subscription_required (modelo médico paga: o CPF não tem assinatura ativa — consulte GET /api-billing-checkout e abra o checkout_url) ou partner_subscription_required/trial expirado (modelo parceiro paga).
409sncr_no_numbers — o médico não tem numeração SNCR disponível para o tipo.
CampoTipoDescrição
signature_idstring · uuid—
status"pending_authorization" | "authorized" | "signed" | "failed" | "cancelled"—
providerstring—
sign_urlstring—
pdf_urlstring—
signature_tokenstring—
signed_atstring,null · date-time—
expires_atstring,null · date-time—
external_idstringnull—
metadataobjectnull—
errorstringnull—
created_atstring · date-time—
updated_atstring · date-time—
sncr_numberstringnullNumeração SNCR (Anvisa) usada no documento controlado
sncr_typestringnull—
sncr_stampedbooleantrue quando o quadro de numeração SNCR foi estampado no PDF pela Prescri.
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-create" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "provider": "birdid",
  "doctor_cpf": "12345678901",
  "doctor_full_name": "Dra. Ana Souza",
  "doctor_crm": "123456",
  "doctor_crm_uf": "SP",
  "pdf_url": "https://seusistema.com/receita.pdf",
  "document_type": "Receituário Médico",
  "webhook_url": "https://seusistema.com/webhooks/prescri",
  "patient": {
    "full_name": "João da Silva",
    "cpf": "98765432100",
    "phone": "5511999998888"
  }
}'
get/api-signatures-get

Consultar assinatura

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (query)—

Respostas

200Status da assinatura
404Não encontrada
CampoTipoDescrição
signature_idstring · uuid—
status"pending_authorization" | "authorized" | "signed" | "failed" | "cancelled"—
providerstring—
sign_urlstring—
pdf_urlstring—
signature_tokenstring—
signed_atstring,null · date-time—
expires_atstring,null · date-time—
external_idstringnull—
metadataobjectnull—
errorstringnull—
created_atstring · date-time—
updated_atstring · date-time—
sncr_numberstringnullNumeração SNCR (Anvisa) usada no documento controlado
sncr_typestringnull—
sncr_stampedbooleantrue quando o quadro de numeração SNCR foi estampado no PDF pela Prescri.
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-get?id=00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
get/api-signatures-pdf

Baixar PDF assinado

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (query)—

Respostas

200PDF assinado
409Documento ainda não assinado
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-pdf?id=00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
post/api-signatures-cancel

Cancelar assinatura

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (query)—

Respostas

200Cancelada
409Já assinado
CampoTipoDescrição
okboolean—
statusstring—
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-cancel?id=00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"

Sessões de assinatura

post/api-signatures-sessions-create

Criar sessão de assinatura

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

CampoTipoDescrição
provider*"birdid" | "vidaas"—
doctor_cpf*string—
session_lifetime_secondsintegerMáx. 604800 (7 dias) no Bird ID e 43200 (12h) no VIDaaS
redirect_urlstring · uri—
application/json
{
  "provider": "birdid",
  "doctor_cpf": "12345678901",
  "session_lifetime_seconds": 604800,
  "redirect_url": "https://seusistema.com/sessao-autorizada"
}

Respostas

201Sessão criada
CampoTipoDescrição
session_idstring · uuid—
status"pending_authorization" | "active" | "expired" | "revoked"—
providerstring—
doctor_cpfstring—
doctor_idstring—
authorize_urlstring—
authorized_atstring,null · date-time—
expires_atstring · date-time—
signatures_countinteger—
last_used_atstring,null · date-time—
session_lifetime_secondsinteger—
created_atstring · date-time—
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-sessions-create" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "provider": "birdid",
  "doctor_cpf": "12345678901",
  "session_lifetime_seconds": 604800,
  "redirect_url": "https://seusistema.com/sessao-autorizada"
}'
get/api-signatures-sessions-get

Consultar sessão

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
session_id*string · uuid (query)—

Respostas

200Status da sessão
CampoTipoDescrição
session_idstring · uuid—
status"pending_authorization" | "active" | "expired" | "revoked"—
providerstring—
doctor_cpfstring—
doctor_idstring—
authorize_urlstring—
authorized_atstring,null · date-time—
expires_atstring · date-time—
signatures_countinteger—
last_used_atstring,null · date-time—
session_lifetime_secondsinteger—
created_atstring · date-time—
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-signatures-sessions-get?session_id=00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"

Catálogo

get/api-document-types

Listar tipos de documento

Autenticação: headers X-API-Key e X-API-Secret

Respostas

200Tipos aceitos em document_type / prescription_type_id
CampoTipoDescrição
document_typesobject[]—
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-document-types" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"

SNCR — receitas controladas

get/api-sncr-balance

Saldo de numeração SNCR do médico

Exige vínculo ativo com o parceiro. Saldo da carteira disponível, não a cota restante na VISA; soma filas institucionais habilitadas e pessoais.

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
doctor_cpf*string (query)—

Respostas

200Saldo por tipo (sncr_type, available, required, can_issue)
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-balance?doctor_cpf=12345678901" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
post/api-sncr-reserve

Pré-reservar numeração SNCR

Exige vínculo ativo. Reserva atômica por 30 minutos (5 a 120), consumida apenas após assinatura. Ordem: institucional habilitada, carteira vinculada ao parceiro, carteira app.

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

CampoTipoDescrição
doctor_cpf*string11 dígitos
sncr_type*"NRA" | "NRB" | "NRB2" | "NRR" | "NRT" | "RCE" | "RET"—
ttl_minutesinteger—
application/json
{
  "doctor_cpf": "12345678901",
  "sncr_type": "NRB",
  "ttl_minutes": 30
}

Respostas

201Número reservado
400Requisição inválida
401Credenciais inválidas
409Carteira do médico sem numeração (sncr_no_numbers)
CampoTipoDescrição
sncr_numberstring—
sncr_typestring—
reservation_tokenstring—
expires_atstring · date-time—
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-reserve" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "doctor_cpf": "12345678901",
  "sncr_type": "NRB",
  "ttl_minutes": 30
}'
delete/api-sncr-reserve

Liberar pré-reserva

Devolve o número reservado para a carteira do médico.

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
reservation_token*string (query)—

Respostas

200Reserva liberada
401Credenciais inválidas
404Reserva não encontrada ou já utilizada
cURL
curl -X DELETE "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-reserve?reservation_token=SEU_RESERVATION_TOKEN" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
post/api-sncr-connect-url

Gerar link gov.br para médico ativo sem exigir conta Prescri

Link privado válido por 1 a 72 horas (padrão 24h). O médico consente e autentica pelo gov.br; o servidor verifica a assinatura JWT e CPF e requisita números à Anvisa. Apenas notificações NRA, NRB, NRB2, NRR e NRT, 10 a 50 por pedido. Sem transposição de talonário físico. O retorno OAuth precisa ocorrer no domínio .br autorizado.

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

application/json
{
  "doctor_cpf": "52998224725",
  "expires_in_hours": 24
}

Respostas

201Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-connect-url" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "doctor_cpf": "52998224725",
  "expires_in_hours": 24
}'
delete/api-sncr-connect-url

Revogar link de conexão

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

application/json
{
  "link_id": "00000000-0000-0000-0000-000000000000"
}

Respostas

200Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl -X DELETE "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-connect-url" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "link_id": "00000000-0000-0000-0000-000000000000"
}'
post/api-sncr-import
desativado

Importação manual desativada

Autenticação: headers X-API-Key e X-API-Secret

Respostas

401Credenciais inválidas
410manual_numbering_disabled — use api-sncr-connect-url
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-sncr-import" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"

Médicos e vagas

get/api-doctors

Listar médicos e vagas (page e limit)

Autenticação: headers X-API-Key e X-API-Secret

Respostas

200Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-doctors" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
post/api-doctors

Incluir médico; limite de vagas transacional

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

application/json
{
  "doctor_cpf": "52998224725",
  "full_name": "Médico de exemplo",
  "crm": "123456",
  "crm_uf": "SP",
  "email": "medico@example.com"
}

Respostas

201Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-doctors" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "doctor_cpf": "52998224725",
  "full_name": "Médico de exemplo",
  "crm": "123456",
  "crm_uf": "SP",
  "email": "medico@example.com"
}'
get/api-doctors/{id}

Consultar médico vinculado

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (path)—

Respostas

200Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-doctors/00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
patch/api-doctors/{id}

Atualizar ou reativar médico

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (path)—

Corpo da requisição

application/json
{
  "status": "active",
  "full_name": "Médico de exemplo"
}

Respostas

200Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl -X PATCH "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-doctors/00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "active",
  "full_name": "Médico de exemplo"
}'
delete/api-doctors/{id}

Inativar médico, preservar histórico e revogar links SNCR

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
id*string · uuid (path)—

Respostas

200Operação concluída
400Parâmetros inválidos
401Credenciais inválidas
403doctor_not_enabled
404doctor_not_found
409doctor_limit_reached / doctor_already_linked
500internal_error
cURL
curl -X DELETE "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-doctors/00000000-0000-0000-0000-000000000000" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"

Cobrança (modelo médico paga)

get/api-billing-checkout

Consultar assinatura do médico (modelo médico paga)

Autenticação: headers X-API-Key e X-API-Secret

Parâmetros

CampoTipoDescrição
doctor_cpf*string (query)—

Respostas

200Status: none | pending | active | past_due
CampoTipoDescrição
doctor_cpfstring—
status"none" | "pending" | "active" | "past_due"—
current_period_endstring—
payment_urlstring—
checkout_urlstringTela da Prescri (https://www.prescri.com.br/fatura/{token}) para revisão dos dados, aceite do contrato versionado (registrado com IP, user-agent e versão antes do pagamento) e pagamento Pix/cartão. No cartão, as mensalidades seguintes são cobradas automaticamente no mesmo cartão (guardado só no intermediador de pagamentos); se recusado, a fatura vai por e-mail para pagamento via Pix. Abra em modal/aba no CRM.
cURL
curl "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-billing-checkout?doctor_cpf=12345678901" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET"
post/api-billing-checkout

Gerar contratação mensal do médico (Pix ou cartão)

Cria (ou reaproveita) a assinatura do médico e devolve checkout_url. Fluxo recomendado: abrir checkout_url, onde o médico aceita o contrato (versão registrada em billing_contract_acceptances) antes de pagar. pix_code/payment_url são retornados para integrações headless, mas o aceite contratual só é registrado na tela checkout_url. A ativação deve ser confirmada pelo backend via GET (status=active).

Autenticação: headers X-API-Key e X-API-Secret

Corpo da requisição

CampoTipoDescrição
doctor_cpf*string—
doctor_full_name*string—
doctor_email*string · emailObrigatório. E-mail do pagador, usado para envio das cobranças.
doctor_phonestring—
doctor_addressobjectOpcional. Endereço do médico ou da clínica para o cadastro do pagador na cobrança. Se ausente ou incompleto, usa o endereço do perfil do médico na Prescri ou um endereço comercial padrão.
doctor_address.descriptionstring—
doctor_address.zipcode*string—
doctor_address.street*string—
doctor_address.number*string—
doctor_address.complementstring—
doctor_address.neighborhood*string—
doctor_address.city*string—
doctor_address.state*string—
payable_with"pix" | "credit"—
application/json
{
  "doctor_cpf": "string",
  "doctor_full_name": "string",
  "doctor_email": "medico@exemplo.com.br",
  "doctor_phone": "string",
  "doctor_address": {
    "description": "Consultório",
    "zipcode": "01310100",
    "street": "Avenida Exemplo",
    "number": "100",
    "complement": "Sala 12",
    "neighborhood": "Centro",
    "city": "São Paulo",
    "state": "SP"
  },
  "payable_with": "pix"
}

Respostas

200Médico já possui assinatura ativa
201Cobrança gerada
400Dados inválidos ou parceiro fora do modelo médico paga
CampoTipoDescrição
status"active"—
checkout_urlstringTela da Prescri (https://www.prescri.com.br/fatura/{token}) para revisão dos dados, aceite do contrato versionado (registrado com IP, user-agent e versão antes do pagamento) e pagamento Pix/cartão. No cartão, as mensalidades seguintes são cobradas automaticamente no mesmo cartão (guardado só no intermediador de pagamentos); se recusado, a fatura vai por e-mail para pagamento via Pix. Abra em modal/aba no CRM.
cURL
curl -X POST "https://suykokupoevtdfalrzue.supabase.co/functions/v1/api-billing-checkout" \
  -H "X-API-Key: $PRESCRI_KEY" \
  -H "X-API-Secret: $PRESCRI_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
  "doctor_cpf": "string",
  "doctor_full_name": "string",
  "doctor_email": "medico@exemplo.com.br",
  "doctor_phone": "string",
  "doctor_address": {
    "description": "Consultório",
    "zipcode": "01310100",
    "street": "Avenida Exemplo",
    "number": "100",
    "complement": "Sala 12",
    "neighborhood": "Centro",
    "city": "São Paulo",
    "state": "SP"
  },
  "payable_with": "pix"
}'

Modelos de dados

Estruturas reutilizadas nos corpos de requisição e nas respostas da API.

Error

CampoTipoDescrição
errorstring—
statusstring—

Patient

CampoTipoDescrição
full_name*string—
cpf*string11 dígitos
phonestring—

SignatureCreateRequest

CampoTipoDescrição
provider*"birdid" | "vidaas"—
doctor_cpf*string11 dígitos
doctor_full_namestring—
doctor_crmstring—
doctor_crm_ufstring—
doctor_specialtystring—
doctor_emailstring · email—
doctor_phonestring—
pdf_base64stringUse pdf_base64 OU pdf_url, nunca ambos
pdf_urlstring · uri—
document_typestring—
prescription_type_idstring · uuid—
external_idstring—
external_metadataobject—
webhook_urlstring · uri—
redirect_urlstring · uri—
session_idstring · uuid—
patientobject—
patient.full_name*string—
patient.cpf*string11 dígitos
patient.phonestring—
stamp_optionsobject—
stamp_options.position"top-left" | "top-right" | "bottom-left" | "bottom-right"—
stamp_options.marginXnumber—
stamp_options.marginYnumber—
stamp_options.qrSizenumber—
sncr_reservation_tokenstringToken de pré-reserva obtido em POST /api-sncr-reserve (opcional). Usa o número já reservado em vez de consumir um novo.
sncr_stampobjectOpcional. Quando presente, a Prescri desenha o quadro "NUMERAÇÃO SNCR" no PDF enviado, antes da assinatura. Sem este objeto o PDF segue inalterado (comportamento legado).
sncr_stamp.position"top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center" | "custom"—
sncr_stamp.xnumberSomente com position=custom. Pontos a partir da borda esquerda.
sncr_stamp.ynumberSomente com position=custom. Pontos a partir do topo.
sncr_stamp.marginXnumber—
sncr_stamp.marginYnumber—
sncr_stamp.page—first (padrão), last, all ou o número da página.
sncr_stamp.widthnumber—
sncr_stamp.ufstringUF impressa no quadro. Padrão: doctor_crm_uf.
documentobjectOpcional. Gera o PDF no modelo Prescri (logo, paciente, texto e/ou itens) em vez de enviar pdf_base64/pdf_url. Exige title e body ou items.
document.title*string—
document.bodystring—
document.itemsobject[]—
document.observationsstring—
document.cid10string—
document.citystring—
document.ufstring—
document.brandingobject—
branding.logo_urlstring—
branding.logo_base64string—
branding.logo_position"left" | "right"—
branding.clinic_namestring—
branding.clinic_cnesstringCNES do estabelecimento (rodapé). Se omitido, usa o CNES cadastrado na empresa.
branding.clinic_cnpjstringCNPJ (só dígitos ou formatado; rodapé). Se omitido, usa o CNPJ cadastrado na empresa. Médico autônomo pode omitir.
branding.clinic_phonestringTelefone de contato (rodapé).
branding.clinic_addressstring—
document.patientobject—
patient.namestring—
patient.cpfstring—
patient.birth_datestring—
patient.genderstring—
patient.addressstring—

Signature

CampoTipoDescrição
signature_idstring · uuid—
status"pending_authorization" | "authorized" | "signed" | "failed" | "cancelled"—
providerstring—
sign_urlstring—
pdf_urlstring—
signature_tokenstring—
signed_atstring,null · date-time—
expires_atstring,null · date-time—
external_idstringnull—
metadataobjectnull—
errorstringnull—
created_atstring · date-time—
updated_atstring · date-time—
sncr_numberstringnullNumeração SNCR (Anvisa) usada no documento controlado
sncr_typestringnull—
sncr_stampedbooleantrue quando o quadro de numeração SNCR foi estampado no PDF pela Prescri.

Session

CampoTipoDescrição
session_idstring · uuid—
status"pending_authorization" | "active" | "expired" | "revoked"—
providerstring—
doctor_cpfstring—
doctor_idstring—
authorize_urlstring—
authorized_atstring,null · date-time—
expires_atstring · date-time—
signatures_countinteger—
last_used_atstring,null · date-time—
session_lifetime_secondsinteger—
created_atstring · date-time—

SncrReservation

CampoTipoDescrição
sncr_numberstring—
sncr_typestring—
reservation_tokenstring—
expires_atstring · date-time—

Como usar esta especificação

  • Postman / Insomnia: importe/openapi.json para ter as requisições prontas, ou use a coleção prescri.postman_collection.json que já traz as variáveis de chave e secret.
  • Gerar cliente: openapi-generator-cli generate -i openapi.json -g typescript-axios (ou python, php, go…) cria o SDK do seu idioma.
  • Validar / visualizar: a URL https://www.prescri.com.br/openapi.json funciona direto em qualquer leitor OpenAPI (Swagger UI, Redoc, Scalar).