# API recipes

> End-to-end recipes that stitch together multiple Dailybot API calls to accomplish real work.

Language: en
Canonical: https://www.dailybot.com/developers/recipes
Markdown: send header `Accept: text/markdown` on any URL to receive Markdown instead of HTML.
Last Updated: 2026-07-02

---

Each recipe below is a self-contained end-to-end flow you can copy-paste today. Every one hits the public API using either an API key or a CLI Bearer token — the parity guarantee holds throughout.

### Post a report from CI

Every green build files a standup update, so the team reads the build like a teammate.

**Stack:** GitHub Actions · Bash · curl  
**Endpoints:** `POST /v1/agent-reports/`

```bash
# .github/workflows/release.yml (fragment)
- name: Report to Dailybot
  env:
    DAILYBOT_API_KEY: ${{ secrets.DAILYBOT_API_KEY }}
  run: |
    curl -X POST https://api.dailybot.com/v1/agent-reports/ \
      -H "X-API-KEY: $DAILYBOT_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "message": "Shipped v$RELEASE_TAG. Regression suite green.",
        "type": "agent"
      }'
```

### Fill a check-in from an agent

Your agent completes the standup on the developer's behalf when they're heads-down.

**Stack:** Python · requests  
**Endpoints:** `GET /v1/checkins/`, `POST /v1/checkins/{uuid}/responses/`

```python
import os, requests

API = "https://api.dailybot.com"
H = {"X-API-KEY": os.environ["DAILYBOT_API_KEY"]}

pending = requests.get(f"{API}/v1/checkins/?only_pending=true", headers=H).json()
for checkin in pending["results"]:
    requests.post(
        f"{API}/v1/checkins/{checkin['uuid']}/responses/",
        headers=H,
        json={"answers": [{"question_uuid": q["uuid"], "answer": "Shipped auth parity fix; staging green."} for q in checkin["questions"]]},
    )
```

### Trigger a workflow from a webhook

Bridge an external event to a Dailybot workflow with two API calls.

**Stack:** Node.js · TypeScript · fetch  
**Endpoints:** `POST /v1/webhook-subscription/`, `POST /v1/workflows/{uuid}/trigger/`

```typescript
import { fetch } from 'undici';

const API = 'https://api.dailybot.com';
const H = { 'X-API-KEY': process.env.DAILYBOT_API_KEY!, 'Content-Type': 'application/json' };

// 1. Subscribe once. Store the returned uuid.
const sub = await (await fetch(`${API}/v1/webhook-subscription/`, {
  method: 'POST', headers: H,
  body: JSON.stringify({ url: 'https://your.app/dailybot/hook', events: ['workflow.trigger.requested'] }),
})).json();

// 2. In your webhook handler, trigger a Dailybot workflow.
export async function handleHook(payload: { workflow_uuid: string; data: Record<string, unknown> }) {
  await fetch(`${API}/v1/workflows/${payload.workflow_uuid}/trigger/`, {
    method: 'POST', headers: H,
    body: JSON.stringify({ inputs: payload.data }),
  });
}
```

### Recognize a teammate

Fire kudos from a bot when someone ships something worth celebrating.

**Stack:** Bash · curl  
**Endpoints:** `GET /v1/users/`, `POST /v1/kudos/`

```bash
# Resolve the user by name, then kudo.
USER_UUID=$(curl -s "https://api.dailybot.com/v1/users/?search=jane.doe" \
  -H "X-API-KEY: $DAILYBOT_API_KEY" | jq -r '.results[0].uuid')

curl -X POST https://api.dailybot.com/v1/kudos/ \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"to_user_uuid\": \"$USER_UUID\",
    \"message\": \"Landed the CI parity fix — nice work!\",
    \"kudo_type\": \"appreciation\"
  }"
```

### Fill a form from an AI agent

Use the `agent-skill` forms sub-skill to submit a compliance form on behalf of a developer.

**Stack:** Cursor / Claude Code · agent-skill  
**Endpoints:** `GET /v1/forms/`, `POST /v1/forms/{uuid}/submit/`

```bash
# The agent has the /skills/agent-skill skill installed.
# In your Cursor / Claude Code session:
"Fill the weekly retro form for me — mark the top blocker as 'auth parity fix rollout'."

# The skill:
# 1. Calls GET /v1/forms/ to find the form named 'weekly retro'.
# 2. Reads its questions.
# 3. Composes a payload aligned with the schema.
# 4. Calls POST /v1/forms/{uuid}/submit/.
```

### Subscribe to events and react

Turn a Dailybot event stream into an ops surface — e.g. auto-post to your incident-response channel when a check-in flags a blocker.

**Stack:** Any HTTP server  
**Endpoints:** `POST /v1/webhook-subscription/`, `GET /v1/agent-messages/`

```bash
# Subscribe (idempotent — re-run if you change the URL).
curl -X POST https://api.dailybot.com/v1/webhook-subscription/ \
  -H "X-API-KEY: $DAILYBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your.app/dailybot/events",
    "subscriptions": ["followups.response.completed", "forms.response.created"]
  }'

# In your handler, verify the HMAC signature Dailybot sends with each
# delivery (see /developers/api/webhooks for the current header + algorithm),
# then react.
```

---

## Developer portal navigation

**Getting Started**

- [Overview](/developers)
- [Quick start](/developers/getting-started)
- [Authentication](/developers/authentication)

**API Reference**

- [API Overview](/developers/api)
- [Users](/developers/api/users)
- [Organization](/developers/api/organization)
- [Teams](/developers/api/teams)
- [Invitations](/developers/api/invitations)
- [Check-ins](/developers/api/check-ins)
- [Forms](/developers/api/forms)
- [Report channels](/developers/api/report-channels)
- [Templates](/developers/api/templates)
- [Kudos](/developers/api/kudos)
- [Mood tracking](/developers/api/mood)
- [Important dates](/developers/api/important-dates)
- [Messaging](/developers/api/messaging)
- [Automations](/developers/api/workflows)
- [Webhooks](/developers/api/webhooks)
- [Commands platform](/developers/api/commands-platform)
- [Agents](/developers/api/agents)
- [OAuth2](/developers/api/oauth2)
- [Integrations](/developers/api/integrations)
- [CLI](/developers/api/cli)

**API guides**

- [Errors & Status Codes](/developers/errors)
- [Rate Limits](/developers/rate-limits)
- [Conventions](/developers/conventions)
- [API Changelog](/developers/api-changelog)
- [Recipes](/developers/recipes) (this page)

**Developer Features**

- [Custom commands](/developers/custom-commands)
- [Serverless commands](/developers/serverless)
- [Webhooks & events](/developers/webhooks)
- [Automation API trigger](/developers/workflow-trigger)
- [Activity API](/developers/activity-api)

**CLI**

- [Overview](/developers/cli)
- [Authentication](/developers/cli-authentication)
- [Command reference](/developers/cli-reference)
- [CI/CD recipes](/developers/cli-ci-cd)
- [Configuration](/developers/cli-configuration)
- [Troubleshooting](/developers/cli-troubleshooting)

**Agent Skill**

- [Overview](/developers/agent-skill)
- [Skills catalog](/skills)

---

## Site navigation

**Product:**
- [Home](/)
- [Product](/product)
- [Pricing](/pricing)
- [Enterprise](/enterprise)
- [Integrations](/integrations)
- [Templates](/templates)

**Resources:**
- [Blog](/blog)
- [Academy](/academy)
- [Changelog](/changelog)
- [Help Center](/help)
- [Developers](/developers)
- [Agents](/agents)

**Company:**
- [About](/about)
- [Careers](/careers)
- [Security](/security)
- [Contact Sales](/demo)

**Connect:**
- [LinkedIn](https://www.linkedin.com/company/dailybot/)
- [X/Twitter](https://twitter.com/dailybot)
- [GitHub](https://github.com/Dailybot-Inc)
- [YouTube](https://www.youtube.com/channel/UC3uM9V52vwX7e3vQpCc4qvA)

