API REST somente leitura para o seu slate, equipe, festivais, calendário e finanças. Pensada para que o seu site público (ou o das suas coprodutoras) leia dados em tempo real da SlateCore — sem precisar duplicá-los em um CMS à parte. Também oferecemos webhooks de saída para que o seu site seja invalidado assim que você mudar algo aqui dentro.
URL base
https://slatecore.app/api/v1Gere a sua chave de API em Configurações → API & Webhooks, dentro do app. Disponível para os planos Studio e Label.
Toda requisição exige o header X-API-Key com a sua chave. As chaves são armazenadas com hash SHA-256 — a versão em texto puro só aparece uma vez, ao criá-la, então guarde-a bem (gerenciador de segredos / variável de ambiente). Se você a perder, revogue e gere uma nova.
curl -H "X-API-Key: sk_live_..." \
https://slatecore.app/api/v1/pingCada chave traz um conjunto de escopos (projects:read, team:read etc.). Um endpoint que exige um escopo que a sua chave não tem retorna 403 insufficient_scope.
Limites por minuto e por dia, configuráveis por chave (padrões: 60/min, 10.000/dia). Quando você os excede, o endpoint retorna 429 rate_limit_exceeded com o header Retry-After. As respostas ficam em cache na edge com s-maxage=30, stale-while-revalidate=60 — aproveite o cache para não gerar uma requisição a cada visitante do seu site.
Todos os erros seguem o formato { error, message }:
400bad_requestQuery inválida (ex.: limit > 100).401invalid_api_keyHeader X-API-Key ausente ou chave revogada.403insufficient_scopeA chave não tem o escopo que este endpoint exige.404not_foundO recurso não existe ou não está acessível para o seu tenant.429rate_limit_exceededVocê excedeu o limite por minuto ou por dia.500internal_errorErro do nosso lado. Tente novamente com backoff exponencial.Visibilidade: privado por padrão
Esta API só retorna os projetos que você marcou como públicos. Por padrão, um projeto é privado e não aparece aqui nem nos sites que consomem a API. Escolha o que expor em Configurações → API & Webhooks → Visibilidade pública na API: seus projetos ficam agrupados por slate (Slate confirmado, Em consideração etc.), com um switch por projeto e um botão para publicar o grupo inteiro de uma só vez. O controle fica na configuração da API —e não no projeto— de propósito: o que se torna público é decidido por quem administra a API (permissãomanageApiKeys), e não por qualquer pessoa com acesso ao projeto. Se você coproduz, cada produtora publica o projeto compartilhado na sua própria API, de forma independente. O filtro se aplica a /projects, /projects/:id, aos prêmios deles e aos /events, /milestones e /finanzas de cada projeto.Recomendado: publique o seu slate confirmado e deixe privado o que ainda estiver em consideração ou descartado. Revise esta lista antes de compartilhar a sua chave de API ou conectar o seu site.
/pingnenhum escopo necessárioVerificação de saúde (health check). Retorna 200 para qualquer chave ativa.
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/ping{ "ok": true, "tenant_id": "..." }/brandingnenhum escopo necessárioRetorna a identidade visual pública (nome, logos, cor) do tenant que faz a chamada.
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/branding{
"data": {
"name": "Mi Productora",
"logo_url": "https://...",
"favicon_url": "https://...",
"apple_touch_icon_url": "https://...",
"primary_color": "#2563eb"
}
}/projectsprojects:readLista de projetos acessíveis (próprios + em colaboração) que você publicou na API pública. Paginada. Só aparecem os projetos publicados — gerencie quais em Configurações → API & Webhooks → Visibilidade pública.
pageintNúmero da página; o padrão é 1.limitintTamanho da página, de 1 a 100; o padrão é 20.curl -H "X-API-Key: $SLATE_API_KEY" \
"https://slatecore.app/api/v1/projects?page=1&limit=20"{
"data": [
{
"id": "uuid",
"nombre": "La Balada del Chupacabras",
"logline": "...",
"estatus": "Producción",
"tipo_de_proyecto": "Largometraje",
"genero": ["Coming of Age", "Comedia"],
"poster_url": "https://...",
"productoras_info": [
{ "nombre": "TM Cine", "logoUrl": "...", "website": "..." }
],
"part_of_slate": "Yes",
"trailer_url": "https://www.youtube.com/watch?v=…",
"collaboration_role": null
}
],
"meta": { "total": 14, "page": 1, "limit": 20 }
}/projects/:idprojects:detailDetalhe completo do projeto, incluindo líder, autores, equipe e comparáveis. Retorna 404 a menos que o projeto esteja publicado (visibilidade pública ativada).
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/projects/<uuid>{
"data": {
"id": "uuid",
"nombre": "...",
"logline": "...",
"sinopsis": "...",
"autores": [{ "nombre": "...", "apellido": "..." }],
"crew": [{ "rol": "Dirección", "nombre": "..." }],
"comparables": [{ "titulo": "...", "año": 2023 }],
"part_of_slate": "Yes",
"trailer_url": "https://vimeo.com/123456789/abcdef"
}
}/projects/:id/awardsawards:readSeleções em festivais e prêmios desse projeto.
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/projects/<uuid>/awards{
"data": [
{
"festival": "Sundance",
"año": 2025,
"estatus": "Selección oficial",
"premio": null
}
]
}/teamteam:readLista pública da equipe do tenant que faz a chamada.
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/team{
"data": [
{
"id": "uuid",
"nombre": "Sebastián Sariñana",
"rol": "Dirección",
"foto_url": "https://...",
"imdb_url": "https://www.imdb.com/name/..."
}
]
}/eventsevents:readEventos do calendário visíveis para quem faz a chamada (projetos próprios + em colaboração).
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/events{
"data": [
{
"id": "uuid",
"titulo": "Pitch a Netflix",
"fecha": "2026-06-12T15:00:00Z",
"proyecto_id": "uuid"
}
]
}/milestonesmilestones:readMarcos visíveis para quem faz a chamada (projetos próprios + em colaboração).
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/milestones{
"data": [
{
"id": "uuid",
"titulo": "Primer corte",
"fecha_objetivo": "2026-09-01",
"completado": false,
"proyecto_id": "uuid"
}
]
}/finanzasfinanzas:readResumos de resultado (P&L) por projeto, agrupados por moeda. Apenas agregados — nunca dados linha a linha. Escopo sensível: ativação opcional por chave.
curl -H "X-API-Key: $SLATE_API_KEY" \
https://slatecore.app/api/v1/finanzas{
"data": [
{
"proyecto_id": "uuid",
"totals": {
"MXN": { "ingresos": 12000000, "gastos": 8500000 },
"USD": { "ingresos": 50000, "gastos": 12000 }
}
}
]
}Receba um POST na sua URL sempre que um dado mudar na SlateCore — útil para revalidar o seu Next.js, invalidar o cache do Webflow ou disparar deploys. Registre o webhook em Configurações → API & Webhooks, no app: você escolhe os eventos que lhe interessam e nós geramos um secret HMAC para que você verifique a origem. Tentamos novamente até 3 vezes, com backoff (1 min, 5 min, 15 min), se o seu endpoint responder com 5xx ou não responder a tempo.
project.created · project.updated · project.deletedINSERT/UPDATE/DELETE em projects, além de qualquer mudança em uma linha de project_collaborators (entrada, saída ou mudança de slate). Distribui o evento (fan-out) a todos os tenants colaboradores ativos.
award.created · award.updated · award.deletedINSERT/UPDATE/DELETE em festivales. Distribui o evento aos colaboradores.
team.created · team.updated · team.deletedINSERT/UPDATE/DELETE em crew_cast. Distribui o evento aos colaboradores.
milestone.created · milestone.updated · milestone.deletedINSERT/UPDATE/DELETE em milestones. Distribui o evento aos colaboradores.
event.created · event.updated · event.deletedINSERT/UPDATE/DELETE em eventos. Distribui o evento quando ele pertence a um projeto; os eventos que são só do tenant ficam apenas com o proprietário.
Todo evento chega no mesmo formato. tenant_id sempre aponta para o tenant receptor — em coproduções, chega um evento para cada tenant que colabora. owner_tenant_id identifica o dono do recurso quando o evento chega por fan-out.
{
"event": "project.updated",
"id": "uuid-do-recurso",
"tenant_id": "uuid-do-receptor",
"proyecto_id": "uuid-ou-null",
"owner_tenant_id": "uuid-ou-null",
"reason": "collaboration_changed",
"timestamp": "2026-05-05T16:30:00Z"
}Headers que enviamos: X-Slate-Event, X-Slate-Signature, X-Slate-Delivery (id único — útil para deduplicar do seu lado).
Cada entrega traz X-Slate-Signature: sha256=<hmac>. Calcule o HMAC-SHA256 do corpo bruto (não serialize o JSON de novo; use os bytes recebidos) com o seu secret e compare antes de confiar.
const crypto = require('crypto')
app.post('/slate-webhook', (req, res) => {
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.SLATE_WEBHOOK_SECRET)
.update(req.rawBody) // bytes brutos, não JSON.stringify
.digest('hex')
if (req.header('x-slate-signature') !== expected) {
return res.status(401).end()
}
// Responda 2xx rápido — processe de forma assíncrona se for lento.
res.status(200).end()
})Quando você edita um projeto compartilhado, os webhooks de cada tenant colaborador também são disparados, com o seu próprio tenant_id e com o owner_tenant_id apontando para o dono. Cada consumidor consulta de novo com a sua chave de API e obtém a sua própria visão (incluindo o seu part_of_slate, que é por tenant).
Quando um colaborador altera algo que afeta somente a ele (o seu próprio part_of_slate em um projeto compartilhado), o evento project.updated é disparado com reason: "collaboration_changed" apenas para esse tenant — o dono não recebe o evento, o que evita spam.
A API e os webhooks estão disponíveis nos planos Studio e Label. Os planos Indie e School não incluem acesso à API. Compare os planos em slatecore.app. Para suporte: hola@slatecore.app.