iClips Public API

Documentação de referência para integração com a iClips Public API.

Base URL: https://public-api.iclips.com.br


Índice


Autenticação

Todos os endpoints requerem autenticação via API Key no cabeçalho HTTP.

HeaderObrigatórioDescrição
X-Api-KeySimChave de API fornecida pela iClips

A API Key é um token gerado pela plataforma iClips para cada agência. Ela deve ser tratada como credencial sigilosa e nunca exposta em código front-end ou repositórios públicos.

Exemplo:

X-Api-Key: eyJwYXlsb2FkIjoieyJBZ2VuY3lJZCI6MTIzfSIsInNpZ25hdHVyZSI6Ii4uLiJ9

Respostas de erro de autenticação

Requisições sem o header ou com chave inválida retornam HTTP 401 com o seguinte formato:

{
  "error": "API Key obrigatória",
  "message": "O header 'X-Api-Key' é obrigatório para acessar este recurso",
  "traceId": "0HNBD52H7RFAGB:00000001",
  "timestamp": "2025-02-10T13:00:00"
}
SituaçãoHTTPCampo error
Header X-Api-Key ausente401API Key obrigatória
Chave inválida, malformada ou expirada401API Key inválida

Formato das respostas

Resposta paginada

Endpoints de listagem retornam o seguinte envelope:

{
  "data": [ ... ],
  "meta": {
    "total": 150,
    "limit": 50,
    "offset": 0,
    "hasMore": true,
    "from": "2025-01-01",
    "to": "2025-03-31"
  }
}
CampoTipoDescrição
dataarrayLista de objetos retornados
meta.totalintegerTotal de registros existentes no período filtrado
meta.limitintegerQuantidade de registros por página
meta.offsetintegerDeslocamento atual da paginação
meta.hasMorebooleanIndica se existem mais páginas
meta.fromstringData de início do filtro aplicado (YYYY-MM-DD)
meta.tostringData de fim do filtro aplicado (YYYY-MM-DD)

Resposta de detalhe (por ID)

{
  "data": { ... }
}

Erros

Existem dois formatos de erro, dependendo da origem:

Erros de autenticação — HTTP 401

Retornados pelo gateway antes de chegar nos endpoints.

{
  "error": "API Key inválida",
  "message": "A API Key fornecida é inválida, malformada ou expirada",
  "traceId": "0HNBD52H7RFAGB:00000001",
  "timestamp": "2025-02-10T13:00:00"
}

Erros de validação e negócio — HTTP 400 / 404

Retornados pelos endpoints de dados.

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "O parâmetro 'from' é obrigatório.",
    "details": [
      { "field": "from", "issue": "missing" }
    ]
  }
}
CódigoHTTPQuando ocorre
VALIDATION_ERROR400Parâmetro ausente, inválido, fora do range ou período acima de 366 dias
NOT_FOUND404Recurso não encontrado ou não pertence à agência autenticada

Exemplos de details para erros de validação:

fieldissueMotivo
frommissingParâmetro from não enviado
tomissingParâmetro to não enviado
limitout_of_rangelimit fora do intervalo 1–200
statusinvalidValor de status não reconhecido
date_rangeexceededDiferença entre from e to maior que 366 dias

Endpoints

1. GET /api/v1/financial/accounts

Retorna todas as contas bancárias ativas da agência. Não possui filtros nem paginação.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/financial/accounts" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": [
    {
      "id": 12,
      "name": "Conta Principal Bradesco",
      "status": "active",
      "isDefault": true,
      "openingDate": "2020-03-15T00:00:00",
      "bank": {
        "number": "237",
        "agency": "1234-5",
        "accountNumber": "00012345-6"
      }
    },
    {
      "id": 17,
      "name": "Caixa Interno",
      "status": "active",
      "isDefault": false,
      "openingDate": null,
      "bank": {
        "number": null,
        "agency": null,
        "accountNumber": null
      }
    }
  ]
}

Campos da resposta

CampoTipoDescrição
idintegerIdentificador único da conta
namestring / nullNome descritivo da conta
statusstringStatus da conta. Valor fixo: active
isDefaultbooleanIndica se é a conta padrão da agência
openingDatedatetime / nullData de abertura da conta
bank.numberstring / nullCódigo do banco (ex: 237 para Bradesco)
bank.agencystring / nullNúmero da agência bancária
bank.accountNumberstring / nullNúmero da conta bancária

2. GET /api/v1/financial/entries

Lista os lançamentos financeiros da agência com suporte a filtros e paginação.

Parâmetros de filtro (query string)

ParâmetroTipoObrigatórioDescrição
fromdateSimData de início do período (YYYY-MM-DD). Filtra pelo campo entryDate.
todateSimData de fim do período (YYYY-MM-DD). Máximo de 366 dias de diferença em relação a from.
typestringNãoTipo do lançamento. Valores aceitos: Entrada, Saída, A Receber, A Pagar
account_idintegerNãoFiltra pelo ID da conta bancária (obtido via /accounts)
category_idintegerNãoFiltra pelo ID da categoria do lançamento
dre_indicatorstringNãoFiltra pelo indicador DRE da categoria raiz. Ver valores válidos abaixo.
destination_idintegerNãoFiltra pelo ID do destinatário/fornecedor do lançamento
job_idintegerNãoFiltra pelo ID do job vinculado ao lançamento
limitintegerNãoRegistros por página. Padrão: 50. Mín: 1. Máx: 200.
offsetintegerNãoDeslocamento para paginação. Padrão: 0.

Valores válidos para dre_indicator:

ValorDescrição
DESPESAS OPERACIONAISDespesas operacionais gerais
DESPESAS OPERACIONAIS CUSTO VARIÁVELCusto variável
DESPESAS OPERACIONAIS CUSTO FIXOCusto fixo
DESPESAS NÃO OPERACIONAISDespesas fora do escopo operacional
IMPOSTOSLançamentos de impostos
PARTICIPAÇÃO NOS LUCROSPLR e similares
RECEITAS OPERACIONAISFaturamento principal
RECEITAS NÃO OPERACIONAISOutras receitas
RECEITAS TOTAISTotalização de receitas
NENHUMSem indicador DRE definido
OUTRODemais categorias

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/financial/entries?from=2025-01-01&to=2025-03-31&type=Sa%C3%ADda&limit=20&offset=0" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": [
    {
      "id": 4801,
      "parentEntryId": 0,
      "jobId": 230,
      "title": "Pagamento fornecedor gráfica",
      "description": "Referente ao job 230 - Campanha Verão 2025",
      "type": "Saída",
      "entryDate": "2025-02-10T00:00:00",
      "dueDate": "2025-02-10T00:00:00",
      "competenceDate": "2025-02-01T00:00:00",
      "amount": 3500.00,
      "discount": null,
      "interest": null,
      "fine": null,
      "otherRetentions": null,
      "irrf": 52.50,
      "issrf": null,
      "taxPercentage": 1.5,
      "category": {
        "id": 18,
        "name": "Produção Gráfica",
        "parentName": "Fornecedores",
        "dreIndicator": "DESPESAS OPERACIONAIS"
      },
      "account": {
        "id": 12,
        "name": "Conta Principal Bradesco",
        "bank": "Bradesco",
        "agency": "1234-5",
        "accountNumber": "00012345-6",
        "companyName": "Agência XYZ Comunicação Ltda",
        "cnpj": "12.345.678/0001-90"
      },
      "invoice": {
        "number": null,
        "issuanceDate": null,
        "description": null
      },
      "destination": {
        "id": 95,
        "name": "Gráfica Expressão Ltda",
        "document": "98.765.432/0001-11"
      },
      "costCenters": [
        {
          "id": 3,
          "name": "Atendimento",
          "amount": 3500.00,
          "percentage": 100.00
        }
      ]
    }
  ],
  "meta": {
    "total": 87,
    "limit": 20,
    "offset": 0,
    "hasMore": true,
    "from": "2025-01-01",
    "to": "2025-03-31"
  }
}

Campos da resposta

CampoTipoDescrição
idintegerIdentificador único do lançamento
parentEntryIdintegerID do lançamento pai (parcelamentos). 0 se não houver
jobIdintegerID do job vinculado. 0 se não vinculado
titlestring / nullTítulo do lançamento
descriptionstring / nullDescrição detalhada
typestringTipo: Entrada, Saída, A Receber, A Pagar
entryDatedatetime / nullData de realização do lançamento
dueDatedatetime / nullData de vencimento/pagamento
competenceDatedatetime / nullData de competência contábil
amountdecimalValor bruto do lançamento
discountdecimal / nullDesconto aplicado
interestdecimal / nullJuros incidentes
finedecimal / nullMulta incidente
otherRetentionsdecimal / nullOutras retenções
irrfdecimal / nullValor do IRRF retido
issrfdecimal / nullValor do ISSRF retido
taxPercentagedecimal / nullPercentual de imposto
category.idintegerID da categoria do lançamento
category.namestring / nullNome da categoria
category.parentNamestring / nullNome da categoria pai
category.dreIndicatorstringIndicador DRE da categoria raiz
account.idintegerID da conta bancária
account.namestring / nullNome da conta
account.bankstring / nullNome do banco
account.agencystring / nullAgência bancária
account.accountNumberstring / nullNúmero da conta bancária
account.companyNamestring / nullRazão social da empresa titular da conta
account.cnpjstring / nullCNPJ da empresa titular da conta
invoice.numberstring / nullNúmero da nota fiscal vinculada ao lançamento
invoice.issuanceDatedatetime / nullData de emissão da nota fiscal vinculada
invoice.descriptionstring / nullDiscriminação da nota fiscal vinculada
destination.idintegerID do destinatário (cliente ou fornecedor)
destination.namestring / nullNome do destinatário
destination.documentstring / nullCPF ou CNPJ do destinatário
costCentersarrayLista de centros de custo rateados no lançamento (pode ser vazia)
costCenters[].idintegerID do centro de custo
costCenters[].namestringNome do centro de custo
costCenters[].amountdecimalValor rateado para este centro de custo
costCenters[].percentagedecimalPercentual do rateio (0–100)

Resposta — 400 Bad Request

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "O período máximo de consulta é de 366 dias.",
    "details": [
      { "field": "date_range", "issue": "exceeded" }
    ]
  }
}

3. GET /api/v1/financial/entries/{id}

Retorna o detalhe de um lançamento financeiro específico.

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
idintegerSimIdentificador do lançamento

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/financial/entries/4801" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": {
    "id": 4801,
    "parentEntryId": 0,
    "jobId": 230,
    "title": "Pagamento fornecedor gráfica",
    "description": "Referente ao job 230 - Campanha Verão 2025",
    "type": "Saída",
    "entryDate": "2025-02-10T00:00:00",
    "dueDate": "2025-02-10T00:00:00",
    "competenceDate": "2025-02-01T00:00:00",
    "amount": 3500.00,
    "discount": null,
    "interest": null,
    "fine": null,
    "otherRetentions": null,
    "irrf": 52.50,
    "issrf": null,
    "taxPercentage": 1.5,
    "category": {
      "id": 18,
      "name": "Produção Gráfica",
      "parentName": "Fornecedores",
      "dreIndicator": "DESPESAS OPERACIONAIS"
    },
    "account": {
      "id": 12,
      "name": "Conta Principal Bradesco",
      "bank": "Bradesco",
      "agency": "1234-5",
      "accountNumber": "00012345-6",
      "companyName": "Agência XYZ Comunicação Ltda",
      "cnpj": "12.345.678/0001-90"
    },
    "invoice": {
      "number": null,
      "issuanceDate": null,
      "description": null
    },
    "destination": {
      "id": 95,
      "name": "Gráfica Expressão Ltda",
      "document": "98.765.432/0001-11"
    },
    "costCenters": [
      {
        "id": 3,
        "name": "Atendimento",
        "amount": 3500.00,
        "percentage": 100.00
      }
    ]
  }
}

Os campos da resposta são idênticos aos descritos na tabela do endpoint de listagem.

Resposta — 404 Not Found

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Recurso não encontrado."
  }
}

4. GET /api/v1/financial/invoices

Lista as notas fiscais emitidas pela agência com suporte a filtros e paginação.

Parâmetros de filtro (query string)

ParâmetroTipoObrigatórioDescrição
fromdateSimData de início do período (YYYY-MM-DD). Filtra pela data de emissão da nota.
todateSimData de fim do período (YYYY-MM-DD). Máximo de 366 dias de diferença em relação a from.
statusstringNãoStatus da nota fiscal. Valores aceitos: pending, issued, cancelled, error
limitintegerNãoRegistros por página. Padrão: 50. Mín: 1. Máx: 200.
offsetintegerNãoDeslocamento para paginação. Padrão: 0.

Valores para status:

ValorDescrição
pendingNota ainda não emitida / aguardando envio
issuedNota emitida com sucesso
cancelledNota cancelada
errorFalha no processo de emissão

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/financial/invoices?from=2025-01-01&to=2025-03-31&status=issued&limit=10&offset=0" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": [
    {
      "id": 310,
      "number": "000123",
      "verificationCode": "ABC12345",
      "status": "issued",
      "issuanceDate": "2025-02-14T10:32:00",
      "competenceDate": "2025-02-01T00:00:00",
      "serviceAmount": 15000.00,
      "deductionsAmount": 0.00,
      "netAmount": 15000.00,
      "taxBaseAmount": 15000.00,
      "issRate": 5.00,
      "issAmount": 750.00,
      "issRetained": false,
      "taxes": {
        "pis": 97.50,
        "cofins": 450.00,
        "inss": null,
        "ir": 225.00,
        "csll": 135.00,
        "issRetainedAmount": null,
        "otherRetentions": null
      },
      "discrimination": "Prestação de serviços de comunicação e marketing referente ao mês de fevereiro de 2025.",
      "client": {
        "name": "Empresa Contratante S/A",
        "document": "11.222.333/0001-44",
        "municipalRegistration": "123456",
        "email": "[email protected]",
        "city": "São Paulo",
        "state": "SP"
      },
      "issuer": {
        "name": "Agência XYZ Comunicação Ltda",
        "tradeName": "Agência XYZ",
        "document": "12.345.678/0001-90",
        "municipalRegistration": "654321"
      },
      "rps": {
        "id": "890",
        "series": "A",
        "batchId": "45"
      },
      "cancellation": null
    }
  ],
  "meta": {
    "total": 34,
    "limit": 10,
    "offset": 0,
    "hasMore": true,
    "from": "2025-01-01",
    "to": "2025-03-31"
  }
}

Campos da resposta

CampoTipoDescrição
idintegerIdentificador único da nota fiscal
numberstring / nullNúmero da nota fiscal emitida pelo município
verificationCodestring / nullCódigo de verificação da NFS-e
statusstringStatus: pending, issued, cancelled, error
issuanceDatedatetime / nullData e hora de emissão
competenceDatedatetime / nullData de competência do serviço
serviceAmountdecimalValor bruto dos serviços prestados
deductionsAmountdecimal / nullTotal de deduções aplicadas
netAmountdecimal / nullValor líquido (serviceAmount − deductionsAmount)
taxBaseAmountdecimal / nullBase de cálculo dos tributos
issRatedecimal / nullAlíquota do ISS (em percentual)
issAmountdecimal / nullValor do ISS calculado
issRetainedbooleantrue se o ISS será retido na fonte pelo tomador
taxes.pisdecimal / nullValor do PIS retido
taxes.cofinsdecimal / nullValor do COFINS retido
taxes.inssdecimal / nullValor do INSS retido
taxes.irdecimal / nullValor do IR retido
taxes.cslldecimal / nullValor do CSLL retido
taxes.issRetainedAmountdecimal / nullValor do ISS retido na fonte (quando issRetained = true)
taxes.otherRetentionsdecimal / nullOutras retenções
discriminationstring / nullDiscriminação dos serviços conforme consta na nota fiscal
client.namestring / nullNome/razão social do tomador de serviço
client.documentstring / nullCPF ou CNPJ do tomador
client.municipalRegistrationstring / nullInscrição municipal do tomador
client.emailstring / nullE-mail do tomador
client.citystring / nullCidade do tomador
client.statestring / nullEstado (UF) do tomador
issuer.namestring / nullRazão social do prestador (emitente)
issuer.tradeNamestring / nullNome fantasia do prestador
issuer.documentstring / nullCNPJ do prestador
issuer.municipalRegistrationstring / nullInscrição municipal do prestador
rps.idstring / nullNúmero do RPS (Recibo Provisório de Serviços)
rps.seriesstring / nullSérie do RPS
rps.batchIdstring / nullIdentificador do lote de envio do RPS
cancellationobject / nullPresente apenas quando status = cancelled
cancellation.reasonCodeintegerCódigo do motivo do cancelamento
cancellation.descriptionstring / nullDescrição do motivo do cancelamento

Resposta — 400 Bad Request

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Valores válidos: pending, issued, cancelled, error.",
    "details": [
      { "field": "status", "issue": "invalid" }
    ]
  }
}

5. GET /api/v1/financial/invoices/{id}

Retorna o detalhe de uma nota fiscal específica.

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
idintegerSimIdentificador da nota fiscal

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/financial/invoices/310" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": {
    "id": 310,
    "number": "000123",
    "verificationCode": "ABC12345",
    "status": "issued",
    "issuanceDate": "2025-02-14T10:32:00",
    "competenceDate": "2025-02-01T00:00:00",
    "serviceAmount": 15000.00,
    "deductionsAmount": 0.00,
    "netAmount": 15000.00,
    "taxBaseAmount": 15000.00,
    "issRate": 5.00,
    "issAmount": 750.00,
    "issRetained": false,
    "taxes": {
      "pis": 97.50,
      "cofins": 450.00,
      "inss": null,
      "ir": 225.00,
      "csll": 135.00,
      "issRetainedAmount": null,
      "otherRetentions": null
    },
    "discrimination": "Prestação de serviços de comunicação e marketing referente ao mês de fevereiro de 2025.",
    "client": {
      "name": "Empresa Contratante S/A",
      "document": "11.222.333/0001-44",
      "municipalRegistration": "123456",
      "email": "[email protected]",
      "city": "São Paulo",
      "state": "SP"
    },
    "issuer": {
      "name": "Agência XYZ Comunicação Ltda",
      "tradeName": "Agência XYZ",
      "document": "12.345.678/0001-90",
      "municipalRegistration": "654321"
    },
    "rps": {
      "id": "890",
      "series": "A",
      "batchId": "45"
    },
    "cancellation": null
  }
}

Os campos da resposta são idênticos aos descritos na tabela do endpoint de listagem.

Resposta — 404 Not Found

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Recurso não encontrado."
  }
}

6. POST /api/v1/jobs

Cria um novo Job (Projeto) no iClips.

Headers

HeaderObrigatórioDescrição
X-Api-KeySimChave da agência
Content-TypeSimapplication/json

Exemplo de requisição

curl -X POST "https://public-api.iclips.com.br/api/v1/jobs" \
  -H "X-Api-Key: <SUA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Campanha Verão 2025",
    "clienteId": 42,
    "status": 6,
    "entradaDate": "2025-06-01",
    "conclusaoDate": "2025-07-31"
  }'

Campos do Request Body

CampoTipoObrigatórioDescrição
titulostringSimTítulo do job. Máx 100 caracteres.
clienteIdinteger / nullCond.*ID do cliente. Mutuamente exclusivo com grupoClienteId.
grupoClienteIdinteger / nullCond.*ID do grupo de cliente. Mutuamente exclusivo com clienteId.
entradaDatedate / nullNãoData de entrada (YYYY-MM-DD). Deve ser ≤ conclusaoDate.
aprovacaoDatedate / nullNãoData de aprovação (YYYY-MM-DD).
conclusaoDatedate / nullNãoData de conclusão (YYYY-MM-DD).
statusintegerSimCódigo do status (ver tabela abaixo).
prioridadeinteger / nullNão1=Baixa, 2=Média, 3=Alta.
servicostring / nullNãoNome do serviço.
campanhastring / nullNãoNome da campanha vinculada.
descricaostring / nullNãoDescrição do job.
briefingstring / nullNãoTexto de briefing.
verbadecimal / nullNãoVerba disponível.
idVerbainteger / nullNãoID da verba vinculada.
idFeeMensalinteger / nullNãoID do fee mensal vinculado.
modeloIdsinteger[]NãoIDs dos modelos de job para geração automática de peças/tarefas.
pecaIdsinteger[]NãoIDs de peças adicionais.
tarefasobject[]NãoTarefas manuais adicionais.

clienteId e grupoClienteId são mutuamente exclusivos; exatamente um deve ser informado.

Valores de status

CódigoNome
1Proposta Comercial
2Concorrência
3Risco
5Aguardando Aprovação
6Autorizado
7Finalizado
8Cancelado
9Aberto pelo Cliente
10Pré Produção
11Stand By

Resposta — 201 Created

{
  "jobId": 1234,
  "titulo": "Campanha Verão 2025",
  "sigla": "JOB-1234",
  "status": 6,
  "totalPecas": 0,
  "totalTarefas": 0
}
CampoTipoDescrição
jobIdintegerID do job criado
titulostringTítulo do job
siglastringSigla gerada automaticamente
statusintegerCódigo do status
totalPecasintegerTotal de peças criadas
totalTarefasintegerTotal de tarefas criadas

Erros

HTTPCenário
400titulo vazio, status inválido, clienteId e grupoClienteId simultâneos
401API Key ausente ou inválida

7. PUT /api/v1/jobs/{id}

Atualiza um Job (Projeto) existente no iClips.

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
idintegerSimIdentificador do job

Exemplo de requisição

curl -X PUT "https://public-api.iclips.com.br/api/v1/jobs/1234" \
  -H "X-Api-Key: <SUA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "titulo": "Campanha Verão 2025 — Revisado",
    "clienteId": 42,
    "status": 7
  }'

Campos do Request Body

Mesmos campos do POST, com as seguintes observações:

CampoTipoObrigatórioDescrição
titulostringSimTítulo do job. Máx 100 caracteres.
statusintegerSimCódigo do status (mesmos valores do POST).
funcionarioIdinteger / nullNãoID do funcionário responsável.
auxiliarIdinteger / nullNãoID do funcionário auxiliar.

Resposta — 200 OK

{ "success": true, "data": { "jobId": 1234 } }

Erros

HTTPCenário
400titulo vazio, status inválido, datas inconsistentes, clienteId e grupoClienteId simultâneos
401API Key ausente ou inválida
404Job não encontrado

8. DELETE /api/v1/jobs/{id}

Exclui um Job (Projeto) do iClips.

Parâmetros de rota

ParâmetroTipoObrigatórioDescrição
idintegerSimIdentificador do job

Exemplo de requisição

curl -X DELETE "https://public-api.iclips.com.br/api/v1/jobs/1234" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{ "success": true }

Erros

HTTPCenário
401API Key ausente ou inválida
404Job não encontrado

9. GET /api/v1/pieces

Lista as peças do catálogo da agência com filtros opcionais e paginação.

Parâmetros de filtro (query string)

ParâmetroTipoObrigatórioDescrição
qstringNãoBusca textual por nome da peça.
categoriastringNãoFiltro por ID de categoria.
statusstringNãoFiltro por status da peça.
basedOnTemplateIdstringNãoFiltro por ID do template base.
pageintegerNãoNúmero da página. Padrão: 1.
pageSizeintegerNãoItens por página. Padrão: 20.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/pieces?q=Banner&page=1&pageSize=20" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

Lista paginada de peças com id, name, description, exibirBool, digitalBool, categoriaIds e metadados de paginação.


10. GET /api/v1/pieces/{id}

Retorna o detalhe de uma peça, incluindo workflowJson e checklistJson completos.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/pieces/456" \
  -H "X-Api-Key: <SUA_API_KEY>"

Erros

HTTPCenário
401API Key ausente ou inválida
404Peça não encontrada

11. POST /api/v1/pieces

Cria uma nova peça no catálogo do iClips.

Use GET /api/v1/workflow-templates para descobrir o id a usar em basedOnTemplateId.
Use GET /api/v1/piece-categories para descobrir os ids a usar em categoriaIds.

Exemplo de requisição

curl -X POST "https://public-api.iclips.com.br/api/v1/pieces" \
  -H "X-Api-Key: <SUA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Banner Digital Full HD",
    "description": "Banner para veiculação digital em formato Full HD",
    "exibirBool": true,
    "digitalBool": true,
    "isFlexible": false,
    "briefingCliente": "Informe as dimensões e o tema",
    "pecaCliente": true,
    "checklistJson": "{}",
    "categoriaIds": [],
    "basedOnTemplateId": 12
  }'

Campos do Request Body

CampoTipoObrigatórioDescrição
namestringSimNome da peça. Máx 255 caracteres.
descriptionstring / nullNãoDescrição da peça.
valorDecimaldecimal / nullNãoValor base.
valorSindraproCriacaoDecimaldecimal / nullNãoValor Sindrapro — Criação.
valorSindraproAdaptacaoDecimaldecimal / nullNãoValor Sindrapro — Adaptação.
valorSindraproFinalizacaoDecimaldecimal / nullNãoValor Sindrapro — Finalização.
valorTotalDecimaldecimal / nullNãoValor total.
exibirBoolbooleanNãoVisível no catálogo. Padrão: true.
digitalBoolboolean / nullNãoPeça digital. Padrão: true.
isFlexiblebooleanNãoPeça flexível. Padrão: false.
briefingClientestringNãoInstrução de briefing ao cliente. Padrão: "".
pecaClientebooleanNãoPadrão: true.
idSindicatointeger / nullNãoID do sindicato vinculado.
tempoMediostring / nullNãoTempo médio de produção (ex: "2h").
instrucaostring / nullNãoInstrução de produção.
checklistJsonstringNãoJSON do checklist. Padrão: "{}".
categoriaIdsinteger[]NãoIDs das categorias. Ver GET /api/v1/piece-categories.
basedOnTemplateIdinteger / nullCond.†ID do workflow template base. Ver GET /api/v1/workflow-templates.
workflowJsonstring / nullCond.†JSON do workflow. Mutuamente exclusivo com basedOnTemplateId.

†Exatamente um entre basedOnTemplateId e workflowJson deve ser informado.

Resposta — 201 Created

{ "success": true, "data": 456 }

data = ID da peça criada.

Erros

HTTPCenário
400name vazio, ambos ou nenhum de basedOnTemplateId / workflowJson
401API Key ausente ou inválida

12. PUT /api/v1/pieces/{id}

Atualiza uma peça existente no catálogo.

Exemplo de requisição

curl -X PUT "https://public-api.iclips.com.br/api/v1/pieces/456" \
  -H "X-Api-Key: <SUA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Banner Digital Full HD — v2",
    "exibirBool": true,
    "pecaCliente": true,
    "workflowJson": "{}",
    "checklistJson": "{}",
    "categoriaIds": []
  }'

Campos do Request Body

Mesmos campos do POST, com as seguintes obrigatoriedades adicionais:

CampoTipoObrigatórioDescrição
namestringSimNome da peça.
workflowJsonstringSimJSON do workflow.
checklistJsonstringSimJSON do checklist.

Resposta — 200 OK

{ "success": true, "data": true }

Erros

HTTPCenário
400name, workflowJson ou checklistJson ausentes
401API Key ausente ou inválida
404Peça não encontrada

13. PATCH /api/v1/pieces/{id}/checklist

Marca ou desmarca um item do checklist de uma peça.

Exemplo de requisição

curl -X PATCH "https://public-api.iclips.com.br/api/v1/pieces/456/checklist" \
  -H "X-Api-Key: <SUA_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "itemId": "step-1",
    "done": true
  }'

Campos do Request Body

CampoTipoObrigatórioDescrição
itemIdstringSimIdentificador do item no checklist.
donebooleanSimtrue = concluído, false = pendente.

Resposta — 200 OK

{ "success": true, "data": true }

Erros

HTTPCenário
400itemId vazio
401API Key ausente ou inválida
404Peça não encontrada

14. DELETE /api/v1/pieces/{id}

Exclui (soft-delete) uma peça do catálogo.

Exemplo de requisição

curl -X DELETE "https://public-api.iclips.com.br/api/v1/pieces/456" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{ "success": true, "data": true }

Erros

HTTPCenário
401API Key ausente ou inválida
404Peça não encontrada

15. GET /api/v1/workflow-templates

Lista os workflow templates disponíveis na agência (sem o workflowJson completo).
Use o id retornado no campo basedOnTemplateId ao criar peças via POST /api/v1/pieces.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/workflow-templates" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

Array de templates com id, nome e descricao (sem workflowJson).


16. GET /api/v1/workflow-templates/{id}

Retorna o detalhe de um workflow template, incluindo o workflowJson completo.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/workflow-templates/12" \
  -H "X-Api-Key: <SUA_API_KEY>"

Erros

HTTPCenário
401API Key ausente ou inválida
404Template não encontrado

17. GET /api/v1/piece-categories

Lista as categorias de peça disponíveis na agência.
Use os ids retornados no campo categoriaIds ao criar ou atualizar peças.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/piece-categories" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

Array de categorias com id e nome.


18. GET /api/v1/piece-categories/dropdown

Retorna categorias de peça em formato simplificado para uso em dropdowns.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/piece-categories/dropdown" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

Array simplificado de categorias com id e nome.


19. GET /api/v1/projetos

Retorna a hierarquia completa de Projetos (Jobs → Peças → Workflows → Atividades e Tarefas → Atividades) para o período informado. Ideal para integrações de BI, exportações e sincronização com ferramentas externas.

Limite de taxa: 10 requisições por minuto por API Key. Excedido, a API retorna HTTP 429 com o header Retry-After indicando quantos segundos aguardar.

Parâmetros de filtro (query string)

ParâmetroTipoObrigatórioDescrição
dataIniciodatetimeSimData/hora de início do período (YYYY-MM-DDTHH:mm:ss). Filtra pela data de entrada do job.
dataFimdatetimeSimData/hora de fim do período. Máximo de 31 dias de diferença em relação a dataInicio.
idClienteintegerNãoFiltra pelo ID do cliente vinculado ao job.
idGrupoClienteintegerNãoFiltra pelo ID do grupo de clientes vinculado ao job.
pageintegerNãoNúmero da página. Padrão: 1. Mínimo: 1.
pageSizeintegerNãoItens por página. Padrão: 20. Máximo: 50.

Exemplo de requisição

curl -X GET "https://public-api.iclips.com.br/api/v1/projetos?dataInicio=2025-01-01T00:00:00&dataFim=2025-01-31T23:59:59&page=1&pageSize=20" \
  -H "X-Api-Key: <SUA_API_KEY>"

Resposta — 200 OK

{
  "data": [
    {
      "idProjeto": 1234,
      "nomeProjeto": "Campanha Verão 2025",
      "statusProjeto": 6,
      "verba": 50000.00,
      "datas": {
        "entrada": "2025-01-05T00:00:00",
        "aprovacao": "2025-01-10T00:00:00",
        "conclusaoEstimada": "2025-01-31T00:00:00",
        "conclusao": null,
        "alteracaoStatus": "2025-01-10T09:30:00"
      },
      "responsaveis": {
        "principal": {
          "id": 42,
          "nome": "Ana Silva",
          "cpf": "123.456.789-00"
        },
        "auxiliar": null
      },
      "cliente": {
        "id": 10,
        "nome": "Empresa Contratante S/A",
        "cnpj": "11.222.333/0001-44"
      },
      "grupoCliente": null,
      "pecas": [
        {
          "idJobPeca": 501,
          "idPeca": 88,
          "nomePeca": "Banner Full HD",
          "tituloAtividade": "Produção Banner",
          "status": 2,
          "isFlexible": false,
          "inicioPlanejado": "2025-01-12T00:00:00",
          "fimPlanejado": "2025-01-20T00:00:00",
          "workflows": [
            {
              "idWorkflow": 301,
              "nome": "Criação",
              "refacao": false,
              "tempoEstimado": "04:00",
              "inicio": "2025-01-12T08:00:00",
              "fim": "2025-01-15T18:00:00",
              "atividades": [
                {
                  "inicioPlay": "2025-01-13T09:00:00",
                  "fimPlay": "2025-01-13T13:00:00",
                  "statusConclusao": null,
                  "tempoGasto": "04:00",
                  "executor": {
                    "id": 55,
                    "nome": "Carlos Lima",
                    "cpf": "987.654.321-00",
                    "departamento": "Criação",
                    "valorHora": 85.00
                  }
                }
              ]
            }
          ]
        }
      ],
      "tarefas": [
        {
          "idTarefaJob": 701,
          "tituloAtividade": "Aprovação cliente",
          "tempoEstimado": "01:00",
          "inicioPlanejado": "2025-01-25T00:00:00",
          "fimPlanejado": "2025-01-26T00:00:00",
          "atividades": []
        }
      ]
    }
  ],
  "meta": {
    "totalCount": 48,
    "page": 1,
    "pageSize": 20
  }
}

Campos da resposta

Projeto (data[])

CampoTipoDescrição
idProjetointegerIdentificador único do job/projeto
nomeProjetostring / nullTítulo do projeto
statusProjetointeger / nullCódigo do status (mesmos valores do POST /api/v1/jobs)
verbadecimal / nullVerba disponível do projeto
datas.entradadatetime / nullData de entrada do projeto
datas.aprovacaodatetime / nullData de aprovação
datas.conclusaoEstimadadatetime / nullData prevista de conclusão
datas.conclusaodatetime / nullData efetiva de conclusão (somente se statusProjeto = 7)
datas.alteracaoStatusdatetime / nullData da última alteração de status
responsaveis.principalobject / nullResponsável principal pelo projeto
responsaveis.auxiliarobject / nullResponsável auxiliar pelo projeto
responsaveis.*.idinteger / nullID do funcionário
responsaveis.*.nomestring / nullNome do funcionário
responsaveis.*.cpfstring / nullCPF do funcionário
clienteobject / nullCliente vinculado ao projeto
grupoClienteobject / nullGrupo de clientes vinculado (mutuamente exclusivo com cliente)
cliente.id / grupoCliente.idinteger / nullID do cliente ou grupo
cliente.nome / grupoCliente.nomestring / nullNome do cliente ou grupo
cliente.cnpjstring / nullCNPJ do cliente (apenas em cliente)

Peça (pecas[])

CampoTipoDescrição
idJobPecaintegerID da instância da peça no job
idPecainteger / nullID do catálogo de peças
nomePecastring / nullNome da peça
tituloAtividadestring / nullTítulo da atividade da peça
statusinteger / nullStatus da peça no job
isFlexiblebooleanIndica se a peça é flexível
inicioPlanejadodatetime / nullData de início planejada
fimPlanejadodatetime / nullData de fim planejada

Workflow (pecas[].workflows[])

CampoTipoDescrição
idWorkflowintegerID do workflow na peça
nomestring / nullNome da etapa de workflow
refacaobooleanIndica se é uma refação
tempoEstimadostring / nullTempo estimado no formato HH:mm
iniciodatetime / nullData de início do workflow
fimdatetime / nullData de fim do workflow

Atividade (workflows[].atividades[] e tarefas[].atividades[])

CampoTipoDescrição
inicioPlaydatetime / nullInício do apontamento de hora
fimPlaydatetime / nullFim do apontamento de hora
statusConclusaodatetime / nullData de conclusão, quando concluída
tempoGastostring / nullTempo gasto no formato HH:mm
executor.idinteger / nullID do funcionário que executou
executor.nomestring / nullNome do executor
executor.cpfstring / nullCPF do executor
executor.departamentostring / nullDepartamento do executor
executor.valorHoradecimal / nullValor/hora do executor

Tarefa (tarefas[])

CampoTipoDescrição
idTarefaJobintegerID da tarefa no job
tituloAtividadestring / nullTítulo da tarefa
tempoEstimadostring / nullTempo estimado no formato HH:mm
inicioPlanejadodatetime / nullData de início planejada
fimPlanejadodatetime / nullData de fim planejada
atividadesarrayApontamentos de hora realizados nesta tarefa

Meta (meta)

CampoTipoDescrição
totalCountintegerTotal de projetos no período filtrado
pageintegerPágina atual
pageSizeintegerItens por página efetivamente aplicados

Resposta — 400 Bad Request

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "O intervalo de datas não pode exceder 31 dias.",
    "details": [
      { "field": "date_range", "issue": "exceeded" }
    ]
  }
}
HTTPCenário
400dataInicio ou dataFim ausentes, dataInicio > dataFim, intervalo > 31 dias
401API Key ausente ou inválida
429Limite de taxa excedido (10 req/min). Header Retry-After indica segundos restantes.

Paginação

Os endpoints de listagem suportam paginação via parâmetros limit e offset (financeiro) ou page e pageSize (projetos/peças).

Exemplo — navegar por todas as páginas (financeiro):

# Página 1
curl "https://public-api.iclips.com.br/api/v1/financial/entries?from=2025-01-01&to=2025-03-31&limit=50&offset=0" \
  -H "X-Api-Key: <SUA_API_KEY>"

# Página 2
curl "https://public-api.iclips.com.br/api/v1/financial/entries?from=2025-01-01&to=2025-03-31&limit=50&offset=50" \
  -H "X-Api-Key: <SUA_API_KEY>"

Continue iterando enquanto meta.hasMore for true ou até que meta.offset + data.length >= meta.total.


Limites e boas práticas

RestriçãoValor
Período máximo por consulta (financeiro)366 dias
Itens por página — financeiro (máximo)200
Itens por página — financeiro (padrão)50
Itens por página — peças (padrão)20
Os parâmetros from e to são obrigatórios em todos os endpoints financeiros de listagem (exceto /accounts)
Período máximo por consulta (projetos)31 dias
Itens por página — projetos (máximo)50
Itens por página — projetos (padrão)20
Limite de taxa — projetos (GET /api/v1/projetos)10 req/min

Versão da API: v1 — Última atualização: Junho de 2026