curl --request POST 'https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"decision":"RESEND_REQUESTED","comment":"O comprovante está no nome de outra pessoa. Envie um no seu nome."}'const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"decision": "RESEND_REQUESTED",
"comment": "O comprovante está no nome de outra pessoa. Envie um no seu nome."
}),
});
const dados = await resposta.json();
import requests
resposta = requests.post(
"https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review",
headers={"Authorization": f"Bearer {token}"},
json={
"decision": "RESEND_REQUESTED",
"comment": "O comprovante está no nome de outra pessoa. Envie um no seu nome."
},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'decision' => 'RESEND_REQUESTED',
'comment' => 'O comprovante está no nome de outra pessoa. Envie um no seu nome.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review"
payload := strings.NewReader("{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6612a7f30000000000000051",
"registryId": "6612a7f30000000000000001",
"status": "IN_PROGRESS",
"itemsTotal": 5,
"itemsResolved": 3,
"itemsAwaitingOperator": 0,
"items": [
{
"id": "6612a7f30000000000000072",
"collectionId": "6612a7f30000000000000051",
"recipientId": "6612a7f30000000000000061",
"order": 2,
"kind": "DOCUMENT",
"documentType": "COMPROVANTE_RESIDENCIA",
"label": "Comprovante de residência",
"required": true,
"status": "PENDING",
"verdict": "INVALIDO",
"rejectionReason": "O comprovante está no nome de outra pessoa. Envie um no seu nome.",
"resendCount": 1,
"resendRequestedAt": "2026-09-06T10:05:00.000Z",
"reviewDecision": "RESEND_REQUESTED",
"reviewComment": "O comprovante está no nome de outra pessoa. Envie um no seu nome.",
"reviewedAt": "2026-09-06T10:05:00.000Z",
"resolvedAt": null
}
]
}{
"code": 400,
"message": "Informe o motivo do pedido de reenvio."
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Item não encontrado nesta solicitação."
}{
"code": 409,
"message": "Este item não está aguardando decisão."
}{
"code": 500,
"message": "Internal server error"
}{
"code": 502,
"message": "Não foi possível registrar a decisão."
}Revisar Item
Modo de resposta com revisão: a IA avaliou e a decisão é sua.
curl --request POST 'https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"decision":"RESEND_REQUESTED","comment":"O comprovante está no nome de outra pessoa. Envie um no seu nome."}'const resposta = await fetch("https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"decision": "RESEND_REQUESTED",
"comment": "O comprovante está no nome de outra pessoa. Envie um no seu nome."
}),
});
const dados = await resposta.json();
import requests
resposta = requests.post(
"https://gyra-core.gyramais.com.br/v1/collections/6612a7f30000000000000001/items/6612a7f30000000000000001/review",
headers={"Authorization": f"Bearer {token}"},
json={
"decision": "RESEND_REQUESTED",
"comment": "O comprovante está no nome de outra pessoa. Envie um no seu nome."
},
)
dados = resposta.json()
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'decision' => 'RESEND_REQUESTED',
'comment' => 'O comprovante está no nome de outra pessoa. Envie um no seu nome.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review"
payload := strings.NewReader("{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://gyra-core.gyramais.com.br/v1/collections/{id}/items/{itemId}/review")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"decision\": \"RESEND_REQUESTED\",\n \"comment\": \"O comprovante está no nome de outra pessoa. Envie um no seu nome.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6612a7f30000000000000051",
"registryId": "6612a7f30000000000000001",
"status": "IN_PROGRESS",
"itemsTotal": 5,
"itemsResolved": 3,
"itemsAwaitingOperator": 0,
"items": [
{
"id": "6612a7f30000000000000072",
"collectionId": "6612a7f30000000000000051",
"recipientId": "6612a7f30000000000000061",
"order": 2,
"kind": "DOCUMENT",
"documentType": "COMPROVANTE_RESIDENCIA",
"label": "Comprovante de residência",
"required": true,
"status": "PENDING",
"verdict": "INVALIDO",
"rejectionReason": "O comprovante está no nome de outra pessoa. Envie um no seu nome.",
"resendCount": 1,
"resendRequestedAt": "2026-09-06T10:05:00.000Z",
"reviewDecision": "RESEND_REQUESTED",
"reviewComment": "O comprovante está no nome de outra pessoa. Envie um no seu nome.",
"reviewedAt": "2026-09-06T10:05:00.000Z",
"resolvedAt": null
}
]
}{
"code": 400,
"message": "Informe o motivo do pedido de reenvio."
}{
"code": 401,
"message": "Token de acesso inválido."
}{
"code": 403,
"message": "Você não tem permissão para acessar este recurso."
}{
"code": 404,
"message": "Item não encontrado nesta solicitação."
}{
"code": 409,
"message": "Este item não está aguardando decisão."
}{
"code": 500,
"message": "Internal server error"
}{
"code": 502,
"message": "Não foi possível registrar a decisão."
}Quando usar
Modo de resposta com revisão: a IA avaliou e a decisão é sua.As três saídas
decision | O que faz | comment |
|---|---|---|
APPROVED | O item fecha | opcional |
RESEND_REQUESTED | O destinatário recebe o pedido outra vez | obrigatório |
WAIVED | O item sai do pedido | opcional |
409, e cada item aceita até 3 pedidos de reenvio: depois disso, aprove ou dispense.
RESEND_REQUESTED, o comment é o texto que o cliente lê. Escreva o que precisa ser corrigido, não o código da verificação.Authorizations
Enter JWT token
Body
Response
O detalhe da solicitacao inteira, ja com o item no status resultante (mesmo corpo de GET /v1/collections/{id}). APPROVED leva o item a VALIDATED, WAIVED a WAIVED e RESEND_REQUESTED de volta a PENDING, com o comentario em rejectionReason.
Uma solicitacao de coleta com itens, destinatarios e trilha.
DRAFT, SENT, IN_PROGRESS, COMPLETED, EXPIRED, CANCELED AUTOMATIC, REVIEW NONE: a plataforma nao avisou ninguem e quem entrega o link e voce.
WHATSAPP, EMAIL, BOTH, NONE Dias apos o envio.
O comportamento herdado do modelo.
Recado do operador ao destinatario.
Resumo do cadastro alvo, para evitar uma segunda chamada.
Hide child attributes
Hide child attributes
DOCUMENT, IDENTITY, CONSENT, SIGNATURE, FORM, CUSTOM CONTRATO_SOCIAL, ALTERACAO_CONTRATUAL, ESTATUTO_SOCIAL, REQUERIMENTO_EMPRESARIO, ATA_ASSEMBLEIA, PROCURACAO_PJ, CERTIDAO_JUNTA, CERTIDAO_QSA, IRPJ_ECF, DECLARACAO_FATURAMENTO, CERTIFICADO_SIMPLES_NACIONAL, DEMONSTRACOES_FINANCEIRAS, EXTRATO_BANCARIO, CERTIDAO_PGFN_PJ, CERTIDAO_FGTS, CADIN_FEDERAL, CADIN_ESTADUAL, ESOCIAL_PJ, DOC_IDENTIDADE, COMPROVANTE_RESIDENCIA, DIRPF, COMPROVANTE_RENDA, CERTIDAO_PF, PROCURACAO_PF, COMPROVACAO_ESTADO_CIVIL, FORA_DE_ESCOPO, NAO_IDENTIFICADO, null O que o destinatario le.
Regras da coleta para este item (recencia, formatos, metodos de identidade).
PENDING, ALREADY_ON_FILE, SUBMITTED, PROCESSING, VALIDATED, REJECTED, MANUAL_REVIEW, AWAITING_OPERATOR, WAIVED, EXPIRED O documento que este item gerou no cadastro.
VALIDO, INVALIDO, INCONCLUSIVO, ANALISE_MANUAL, null Motivo tecnico, para o operador.
Um por arquivo enviado, com o parecer de cada um. Vazio no item que ainda nao recebeu nada.
Hide child attributes
Hide child attributes
PENDING, ALREADY_ON_FILE, SUBMITTED, PROCESSING, VALIDATED, REJECTED, MANUAL_REVIEW, AWAITING_OPERATOR, WAIVED, EXPIRED VALIDO, INVALIDO, INCONCLUSIVO, ANALISE_MANUAL, null SCR, null O formulario pedido.
O que a extracao sugeriu.
O que a pessoa respondeu.
A avaliacao da verificacao em portugues (veredito, similaridade, prova de vida, sinais de antifraude). O payload cru do provedor NAO vem aqui.
Quantas imagens estao guardadas. Os enderecos saem por acao explicita, que fica na trilha.
INDIVIDUAL, JOINT SIGNATURE, SIGNATURE_AND_IDENTITY, null "2 de 4 assinaram", ja pronto.
Hide child attributes
Hide child attributes
Nome das partes obrigatorias que faltam.
Assinaram o texto e esperam a verificacao de identidade.
Partes sem contato para receber o link.
true quando a via em PDF pode nascer.
APPROVED, RESEND_REQUESTED, WAIVED, null Por que o item nasceu ALREADY_ON_FILE, em portugues.
true quando ha via assinada para baixar em GET /v1/collections/{id}/items/{itemId}/signed-document.
Quantos e-mails foram oferecidos para a verificacao por e-mail (nunca quais).
Hide child attributes
Hide child attributes
E.164.
FAILED quer dizer que a MENSAGEM nao chegou. NO_ITEMS: nao sobrou item para essa pessoa.
PENDING, DELIVERED, OPENED, IN_PROGRESS, COMPLETED, FAILED, NO_ITEMS PENDING, SENT, DELIVERED, FAILED PENDING, SENT, DELIVERED, FAILED So volta na criacao e na reemissao. O token cru nunca e persistido.
A trilha, append-only. O detalhe traz os 100 eventos mais recentes.
Itens esperando decisao humana (AWAITING_OPERATOR ou MANUAL_REVIEW).

