> ## Documentation Index
> Fetch the complete documentation index at: https://tryklint.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Fetch /llms.txt for the complete page index before exploring further. Every docs page is available as markdown by appending .md to its URL. Coding agents should start at /for-agents/coding-agents.md.

# Quickstart

> Search Instagram posts in curl, Python, or TypeScript and read one back in full.

Three steps.

<Steps>
  <Step title="Get an API key">
    Create a key in the Klint dashboard. Export it:

    ```bash theme={null}
    export KLINT_API_KEY="klint_..."
    ```

    Every request sends `Authorization: Bearer $KLINT_API_KEY`. See [Authentication](/docs/api-reference/authentication).

    <Note>
      An account-free trial (`npx klint setup`) is planned; until it lands, the dashboard is the way in.
    </Note>
  </Step>

  <Step title="Search posts">
    One request with a semantic query, a post filter, and nested author filters:

    <Tabs>
      <Tab title="curl">
        ```bash theme={null}
        curl -X POST "https://api.tryklint.ai/v1/instagram/posts/search" \
          -H "Authorization: Bearer $KLINT_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
          "post": {
            "query": "UGC-style grooming-product demonstrations",
            "filters": {
              "posted_at": {
                "gte": "2026-06-01T00:00:00Z"
              },
              "format": {
                "in": ["reel"]
              }
            },
            "author": {
              "filters": {
                "followers_count": {
                  "gte": 5000,
                  "lte": 50000
                },
                "niches": {
                  "contains_any": ["pets"]
                }
              }
            }
          },
          "limit": 10
        }'
        ```
      </Tab>

      <Tab title="Python">
        ```python theme={null}
        import os, requests

        resp = requests.post(
            "https://api.tryklint.ai/v1/instagram/posts/search",
            headers={"Authorization": f"Bearer {os.environ['KLINT_API_KEY']}"},
            json={
          "post": {
            "query": "UGC-style grooming-product demonstrations",
            "filters": {
              "posted_at": {
                "gte": "2026-06-01T00:00:00Z"
              },
              "format": {
                "in": ["reel"]
              }
            },
            "author": {
              "filters": {
                "followers_count": {
                  "gte": 5000,
                  "lte": 50000
                },
                "niches": {
                  "contains_any": ["pets"]
                }
              }
            }
          },
          "limit": 10
        },
        )
        results = resp.json()
        ```
      </Tab>

      <Tab title="TypeScript">
        ```typescript theme={null}
        const resp = await fetch("https://api.tryklint.ai/v1/instagram/posts/search", {
          method: "POST",
          headers: {
            Authorization: `Bearer ${process.env.KLINT_API_KEY}`,
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            "post": {
              "query": "UGC-style grooming-product demonstrations",
              "filters": {
                "posted_at": {
                  "gte": "2026-06-01T00:00:00Z"
                },
                "format": {
                  "in": ["reel"]
                }
              },
              "author": {
                "filters": {
                  "followers_count": {
                    "gte": 5000,
                    "lte": 50000
                  },
                  "niches": {
                    "contains_any": ["pets"]
                  }
                }
              }
            },
            "limit": 10
          }),
        });
        const results = await resp.json();
        ```
      </Tab>
    </Tabs>

    <Accordion title="Full response">
      ```json theme={null}
      {
        "request_id": "req_example_01",
        "data": [
          {
            "id": "ig_post_8f3k2",
            "shortcode": "DLm2XwYv4Qk",
            "web_url": "https://www.instagram.com/reel/DLm2XwYv4Qk/",
            "posted_at": "2026-07-06T14:02:00Z",
            "observed_at": "2026-07-14T16:10:00Z",
            "format": "reel",
            "primary_language": "en",
            "caption": "The brush that finally fixed our shedding problem 🐕 One week of daily passes and the couch is fur-free. Grab 20% off with code GROOM20 — link in bio. #doggrooming",
            "hashtags": [
              "doggrooming"
            ],
            "caption_mentions": [],
            "audio": {
              "id": "ig_audio_7m4q",
              "instagram_id": "587784541076604",
              "type": "music",
              "title": "Birthday Wish",
              "attribution": {
                "display_name": "Shuba",
                "account": null
              },
              "duration_seconds": 153.76,
              "web_url": "https://www.instagram.com/reels/audio/587784541076604/"
            },
            "content_summary": "A creator demonstrates a deshedding brush on a dog, describes a less-messy grooming routine, shows the result, and directs viewers to a discount in the Account bio.",
            "topics": [
              "dog_grooming",
              "at_home_pet_care"
            ],
            "creative_formats": [
              "talking_head",
              "product_demonstration",
              "creator_testimonial"
            ],
            "hook": {
              "construction": "The creator holds the brush beside a visibly shedding dog, states that it changed the grooming routine, and displays a seven-day result claim.",
              "devices": [
                "problem_callout",
                "direct_promise"
              ],
              "modalities": [
                "visual",
                "spoken",
                "on_screen_text"
              ]
            },
            "key_messages": [
              {
                "summary": "The brush is presented as making at-home shedding cleanup easier.",
                "roles": [
                  "claim",
                  "benefit",
                  "use_case"
                ],
                "presentation": "asserted"
              }
            ],
            "proofs": [
              {
                "summary": "The creator demonstrates brushing the dog and shows the collected hair.",
                "mechanisms": [
                  "live_product_demonstration",
                  "result_reveal"
                ],
                "cited_source_types": []
              }
            ],
            "offers": [
              {
                "summary": "20% off with a stated promo code.",
                "types": [
                  "discount",
                  "promo_code"
                ],
                "stated_terms": [
                  "20% off",
                  "GROOM20"
                ]
              }
            ],
            "calls_to_action": [
              {
                "summary": "Use the link in the Account bio.",
                "actions": [
                  "visit_profile_link"
                ],
                "stages": [
                  "closing"
                ],
                "modalities": [
                  "spoken",
                  "on_screen_text",
                  "caption"
                ]
              }
            ],
            "narrative_structure": {
              "description": "Problem framing, product demonstration, result reveal, then offer and CTA.",
              "patterns": [
                "problem_solution",
                "demonstration_to_result",
                "offer_close"
              ]
            },
            "has_paid_partnership_label": false,
            "paid_partners": [],
            "commercial_contexts": [
              "promo_code",
              "seller_behavior"
            ],
            "comments_enabled": true,
            "views": 412000,
            "likes": 28600,
            "comments": 354,
            "engagement_rate_by_views": 0.0703,
            "view_ratio_to_account_baseline": 6.2,
            "author": {
              "id": "ig_account_2j1x",
              "handle": "dogmomdaily",
              "display_name": "Dog Mom Daily",
              "web_url": "https://www.instagram.com/dogmomdaily/",
              "avatar_url": "https://media.tryklint.ai/accounts/ig_account_2j1x/avatar",
              "followers_count": 21400,
              "is_verified": false
            },
            "coauthors": []
          },
          {
            "id": "ig_post_9m3t",
            "shortcode": "DMq7RwXk2Pd",
            "web_url": "https://www.instagram.com/reel/DMq7RwXk2Pd/",
            "posted_at": "2026-06-24T19:15:00Z",
            "observed_at": "2026-07-14T13:40:00Z",
            "format": "reel",
            "primary_language": "en",
            "caption": "POV: shedding season with a husky 😅 This grooming glove is the only thing keeping our couch alive. #huskylife #sheddingseason #doggrooming",
            "hashtags": [
              "huskylife",
              "sheddingseason",
              "doggrooming"
            ],
            "caption_mentions": [],
            "audio": {
              "id": "ig_audio_2b8c",
              "instagram_id": null,
              "type": "original_sound",
              "title": "Original audio",
              "attribution": {
                "display_name": "brodyandbear",
                "account": {
                  "id": "ig_account_3d6p",
                  "handle": "brodyandbear",
                  "display_name": "Brody & Bear",
                  "web_url": "https://www.instagram.com/brodyandbear/",
                  "avatar_url": "https://media.tryklint.ai/accounts/ig_account_3d6p/avatar",
                  "followers_count": 12400,
                  "is_verified": false
                }
              },
              "duration_seconds": 18.9,
              "web_url": null
            },
            "content_summary": "A dog owner films a casual at-home demonstration of a grooming glove on a shedding husky, showing the removed undercoat and joking about protecting the couch.",
            "topics": [
              "dog_grooming",
              "at_home_pet_care"
            ],
            "creative_formats": [
              "product_demonstration"
            ],
            "hook": {
              "construction": "A point-of-view framing of shedding season opens on a husky mid-shed before the owner pulls out the grooming glove.",
              "devices": [
                "relatable_scenario"
              ],
              "modalities": [
                "visual",
                "on_screen_text"
              ]
            },
            "key_messages": [
              {
                "summary": "The grooming glove is presented as an easy way to control husky shedding at home.",
                "roles": [
                  "claim",
                  "benefit"
                ],
                "presentation": "asserted"
              }
            ],
            "proofs": [
              {
                "summary": "The owner demonstrates the glove on the husky and shows the removed fur.",
                "mechanisms": [
                  "live_product_demonstration",
                  "result_reveal"
                ],
                "cited_source_types": []
              }
            ],
            "offers": [],
            "calls_to_action": [],
            "narrative_structure": null,
            "has_paid_partnership_label": false,
            "paid_partners": [],
            "commercial_contexts": [],
            "comments_enabled": true,
            "views": 156000,
            "likes": 9800,
            "comments": 412,
            "engagement_rate_by_views": 0.0655,
            "view_ratio_to_account_baseline": null,
            "author": {
              "id": "ig_account_3d6p",
              "handle": "brodyandbear",
              "display_name": "Brody & Bear",
              "web_url": "https://www.instagram.com/brodyandbear/",
              "avatar_url": "https://media.tryklint.ai/accounts/ig_account_3d6p/avatar",
              "followers_count": 12400,
              "is_verified": false
            },
            "coauthors": []
          }
        ],
        "has_more": false,
        "next_cursor": null
      }
      ```
    </Accordion>

    Every returned post satisfies the query and every filter. Weak matches never pad the list. `has_more` and `next_cursor` continue the result set; see [pagination](/docs/instagram/search/posts-search#pagination).
  </Step>

  <Step title="Read one post in full">
    Follow a result's `id` to the complete post, with ordered media items, transcript, on-screen text, and visual descriptions:

    ```bash theme={null}
    curl "https://api.tryklint.ai/v1/instagram/posts/ig_post_8f3k2" \
      -H "Authorization: Bearer $KLINT_API_KEY"
    ```
  </Step>
</Steps>

## Next

<Columns cols={2}>
  <Card title="Filter grammar" href="/docs/instagram/search/posts-search#filter-the-results">
    Operators, composition rules, and what gets rejected.
  </Card>

  <Card title="Search accounts" href="/docs/instagram/search/accounts-search">
    Find accounts by who they currently appear to be.
  </Card>

  <Card title="Klint for coding agents" href="/docs/for-agents/coding-agents">
    The whole contract on one agent-ready page.
  </Card>

  <Card title="Errors" href="/docs/api-reference/errors">
    Every error, what causes it, and whether to retry.
  </Card>
</Columns>
