Skip to content

Examples

These examples show the tool calls an AI agent makes behind the scenes. You don’t need to write these yourself — describe what you want in natural language and your agent handles the rest.

  1. List integrations

    The agent calls integrationList and finds your Instagram account:

    {
    "output": [
    {
    "id": "abc123",
    "name": "vincentleserpent",
    "picture": "https://...",
    "platform": "instagram-standalone"
    }
    ]
    }
  2. Get platform schema

    The agent calls integrationSchema with platform: "instagram-standalone" to learn the rules:

    {
    "output": {
    "rules": "Instagram should have at least one attachment, if it's a story, it can have only one picture",
    "maxLength": 2200,
    "settings": { "post_type": "post | story", "...": "..." },
    "tools": []
    }
    }
  3. Schedule the post

    The agent calls integrationSchedulePostTool:

    {
    "socialPost": [
    {
    "integrationId": "abc123",
    "isPremium": false,
    "date": "2026-10-02T10:00:00.000Z",
    "shortLink": false,
    "type": "schedule",
    "postsAndComments": [
    {
    "content": "<p>Trois choses que personne ne dit sur Malte.</p>",
    "attachments": ["https://app.usenadia.com/uploads/reel.mp4"]
    }
    ],
    "settings": [
    { "key": "post_type", "value": "post" }
    ]
    }
    ]
    }

A post of type story publishes one story per attachment, in order:

{
"socialPost": [
{
"integrationId": "abc123",
"date": "2026-10-02T18:00:00.000Z",
"type": "schedule",
"postsAndComments": [
{
"content": "<p></p>",
"attachments": [
"https://app.usenadia.com/uploads/story-1.jpg",
"https://app.usenadia.com/uploads/story-2.jpg",
"https://app.usenadia.com/uploads/story-3.jpg"
]
}
],
"settings": [{ "key": "post_type", "value": "story" }]
}
]
}

A trial reel goes to non-followers first, then graduates. It must be exactly one video:

{
"settings": [
{ "key": "post_type", "value": "post" },
{ "key": "is_trial_reel", "value": true },
{ "key": "graduation_strategy", "value": "SS_PERFORMANCE" }
]
}

MANUAL graduates when you say so; SS_PERFORMANCE when Instagram decides the reel is doing well enough.

  1. Read the schema

    integrationSchema with platform: "tiktok" returns a 2,000 character limit and the settings below.

  2. Schedule

    {
    "socialPost": [
    {
    "integrationId": "tiktok-123",
    "date": "2026-10-02T10:00:00.000Z",
    "type": "schedule",
    "postsAndComments": [
    {
    "content": "<p>Trois choses que personne ne dit sur Malte.</p>",
    "attachments": ["https://app.usenadia.com/uploads/video.mp4"]
    }
    ],
    "settings": [
    { "key": "content_posting_method", "value": "DIRECT_POST" },
    { "key": "privacy_level", "value": "PUBLIC_TO_EVERYONE" },
    { "key": "duet", "value": true },
    { "key": "stitch", "value": true },
    { "key": "comment", "value": true },
    { "key": "autoAddMusic", "value": "no" },
    { "key": "brand_content_toggle", "value": false },
    { "key": "brand_organic_toggle", "value": false }
    ]
    }
    ]
    }

socialPost is an array: one call, several channels, one settings block each.

{
"socialPost": [
{
"integrationId": "instagram-1",
"date": "2026-10-02T10:00:00.000Z",
"type": "schedule",
"postsAndComments": [
{ "content": "<p>…</p>", "attachments": ["https://app.usenadia.com/uploads/video.mp4"] }
],
"settings": [{ "key": "post_type", "value": "post" }]
},
{
"integrationId": "tiktok-1",
"date": "2026-10-02T10:00:00.000Z",
"type": "schedule",
"postsAndComments": [
{ "content": "<p>…</p>", "attachments": ["https://app.usenadia.com/uploads/video.mp4"] }
],
"settings": [
{ "key": "content_posting_method", "value": "DIRECT_POST" },
{ "key": "privacy_level", "value": "PUBLIC_TO_EVERYONE" }
]
}
]
}

Extra items in postsAndComments publish as comments on your own post:

{
"postsAndComments": [
{ "content": "<p>Trois choses que personne ne dit sur Malte.</p>", "attachments": ["https://app.usenadia.com/uploads/reel.mp4"] },
{ "content": "<p>Le guide complet est en bio 👆</p>", "attachments": [] }
]
}

This is a tool the original project does not have. It reads the collected history, not the platform.

  1. Call videoPerformance

    {
    "integrationId": "abc123",
    "limit": 10
    }
  2. Read the answer at equal age

    The response carries each video’s viewsAtAge (H+4 … H+168) and, for the focus video, its rank and the median at that age, plus a projection to H+120 from the channel’s own H+24 → H+120 multiplier.

A channel with collection switched off answers collected: false and says why — see Analytics → History.

{
"postId": "post-123",
"date": "2026-10-03 18:00:00"
}

Get the ID from postsListTool first. Moving is reversible, so it needs no confirmation — but a post that already published cannot be moved, and the tool says so rather than failing silently.

  1. Generate the image

    The agent calls generateImageTool with a prompt, and gets back a hosted URL.

  2. Schedule with it

    That URL goes straight into attachments.

An attachment that is not on UseNadia’s own domain fails upload-domain validation. Pull it in first:

{
"url": "https://cdn.example.com/render-42.mp4"
}

uploadFromUrlTool returns { id, path, contentType, size, duration, width, height, codec }; use path in attachments, and compare size and duration with the source when it told you them.

You uploaded a clip from your phone and want to post it without its last sentence. The agent chains four tools:

  1. mediaList with { "type": "video", "limit": 1 }: the latest upload, its path and duration.
  2. transcribe with { "path": "<path>" }: the sentences with their timestamps. Say the second one ends at 24.45.
  3. cutVideo with { "path": "<path>", "cuts": [24.45] }: two new videos, 0 → 24.45 and 24.45 → end. It takes a moment: the agent says so first.
  4. integrationSchedulePostTool with the first part’s path in attachments.

To keep only some passages instead, pass segments: { "path": "<path>", "segments": [{ "start": 3.2, "end": 18.9 }] }.

Several posts in one socialPost array, each with its own date, is the way to lay out a week in one call. Ask for type: "draft" while you are still reviewing: drafts sit on the calendar and never publish.