ingestlayer/recipes

AI agent → Notion

Agents — Claude Code, Cursor, your own app — call a pipeline by id like a named function, authenticated with a per-agent bearer token scoped to an explicit pipeline allowlist. The request body is the event; with ?wait=true the agent gets the post-pipeline payload back to use as a tool result.

01source

sourceagentAI agent
matchcompany.lookup

02pipeline · 3 steps

  • 01MUTredact.piistrip secrets from prompts + outputs
  • 02ENRclassifylabel calls by risk
  • 03ENRsummarizetrace → one-line outcome

03destinations · 1

  • tonotion.dbNotion
    databaseSignups

how events arrive

  1. 01

    create an agent source

    Add an AI-agent source; ingestlayer issues a bearer token bound to an explicit allowlist of pipeline ids the agent may invoke — nothing else.

  2. 02

    invoke a pipeline

    From the agent, POST the event payload to https://in.ingestlayer.com/v1/agent/invoke/<pipelineId> with the bearer token. The body is the event; anything goes — the downstream actions handle the shape.

  3. 03

    fire-and-forget or wait

    By default the pipeline runs and its destinations fire. Add ?wait=true to also get a poll URL that returns the post-actions payload — the agent reads the enriched, redacted result and uses it as a tool response.

from ai agentdelivered
POST /v1/agent/invoke/pl_enrich_lead?wait=true HTTP/1.1
Host: in.ingestlayer.com
Authorization: Bearer ag_live_8fa2…
Content-Type: application/json

{
  "type":  "company.lookup",
  "email": "ada@acme.com"
}

route it to Notion

Append events as rows to a Notion database, or content to a page. Connect once with OAuth, pick the target per pipeline.

  1. 01

    connect your workspace

    Authorize the ingestlayer Notion integration over OAuth from the destinations page, then choose which databases and pages it may touch. We hold only that workspace's access token, in-region, in the same KMS as your other credentials.

  2. 02

    pick a target

    Per pipeline, choose a database to append a typed row to, or a page to append content to. The picker lists exactly what you shared with the integration during authorization — nothing else.

  3. 03

    map the columns

    For a database, match event fields to Notion properties — automatically by column name, or per-column with $event.* templates. The title column falls back to the event name, so a row is never blank. For a page, the rendered body is appended as blocks.

in notiondelivered
┌─ Signups · database ───────────────────┐
│  Name        ada@acme.com               │
│  Plan        ● pro                       │
│  Source      marketing-site             │
│  Signed up   2026-06-03                  │
└─────────────────────────────────────────┘

notes

questions

How does an agent send data in?
It calls a pipeline by id like a function: POST the event to /v1/agent/invoke/<pipelineId> with the agent's bearer token. The request body is the event payload.
Can the agent use the processed result?
Yes — invoke with ?wait=true and ingestlayer returns a poll URL holding the post-actions payload (enriched, classified, redacted), so the agent can use it as a tool result. The pipeline's normal destinations still fire.
How do I keep prompt data out of chat?
redact.pii masks sensitive fields per destination, so a warehouse copy can keep the full trace while the Slack message shows only a clean summary.
build this pipelineor read the quickstart →

AI agent, routed elsewhere

other sources, into Notion