Knowledge CenterAPI References

Claude Code Skills

Skill files give Claude Code deep, action-oriented knowledge of the Dalil API. Each file covers one entity — endpoints, required fields, request bodies, search patterns, and the gotchas that matter most.

Source:Dalil-AI/dalil-docs-and-skills / .claude/CLAUDE.md

What Are Skills Files?

Skills files are condensed, action-oriented references designed for AI agents to follow directly. Unlike the full API docs written for developers, skills files are written so Claude Code can execute API operations accurately without guessing field names, data formats, or required structures.

TypePathAudience
API DocsapiDocs/*.mdDevelopers integrating with Dalil AI
Skills.claude/skills/*.mdAI agents executing API operations

Before any API operation Claude will ask for a Bearer token (API key) if you haven't provided one. No request can succeed without it.

Choosing the Right Skill

Skill fileWhen to use
person.mdCreating, searching, updating, or deleting people/contacts
company.mdCreating, searching, updating, or deleting companies/organizations
opportunity.mdCreating, searching, updating, or deleting deals/opportunities
note.mdCreating, searching, updating, or deleting notes
task.mdCreating, searching, updating, or deleting tasks/to-dos
pipeline.mdWorking with dynamic CRM pipelines (discovers endpoints first)
note-relation.mdAttaching notes to people, companies, or opportunities
task-relation.mdAttaching tasks to people, companies, or opportunities
💡 When an operation spans multiple entities (e.g. create a person and attach a note), load both relevant skill files. For note/task operations, use the base skill to create the record then the relation skill to link it.

Key Conventions

ConventionRule
CurrencyAmounts in micros — multiply by 1,000,000 (e.g. $50 → 50000000)
SELECT / MULTI_SELECTValues must be UPPER_SNAKE_CASE
LINKS{ primaryLinkUrl, primaryLinkLabel, secondaryLinks: [] }
Person nameNested object { firstName, lastName } — not flat fields
Note / Task bodyUse bodyV2 with { markdown, blocknote } or plain body (auto-converted)
PaginationCursor-based via starting_after (UUID of last record); default 60 per page
Filteringfilter=field[comparator]:value — always URL-encode; nested via dot notation
Read-only fieldsNever set: id, createdAt, updatedAt, deletedAt, position, createdBy

API Architecture

Base URL: https://app.usedalil.ai

InterfacePathPurpose
REST/rest/...All CRUD operations
GraphQL/graphqlFull-text search only — returns IDs, then fetch via REST

Search pattern: POST to /graphql with searchInput → get recordId list → GET /rest/{entity}?filter=id[in]:[id1,id2] to get full records.

Pipeline search uses a different GraphQL query: searchPipeline (not search), and requires nameSingular.