# Komi Link-in-Bio API Documentation

Scrappa's `GET /api/link-in-bio/komi` endpoint reads a public Komi talent profile and returns its profile, typed social links, module list, and every nested link as structured JSON. Pass either `handle` or a full `url`.

Komi groups its links in modules that nest several levels deep; this endpoint returns every leaf link it finds, plus a per-module summary with an item count. Many links carry no title upstream, so `title` is `null` for those rather than missing. An existing profile with nothing configured answers with HTTP 200 and an empty result. That response is not billable, and its `meta.reason` explains which case applied.

- **Documentation:** [https://scrappa.co/docs/link-in-bio-api/link_in_bio_komi](https://scrappa.co/docs/link-in-bio-api/link_in_bio_komi)
- **API group:** Link-in-Bio API
- **Endpoint:** `GET https://scrappa.co/api/link-in-bio/komi`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string | No | Komi username, for example paul. |
| `url` | string | No | Full Komi profile URL. Used when you do not have the bare username. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/link-in-bio/komi?handle=paul"
```

## Example response

```json
{
    "provider": "komi",
    "handle": "paul",
    "profile": {
        "id": "0f7b6c8a-2222-4444-8888-abcdefabcdef",
        "username": "paul",
        "name": "Paul",
        "description": "Music",
        "avatar": "https://cdn.example.com/avatar.jpg",
        "account_status": "active"
    },
    "socials": [
        {
            "type": "INSTAGRAM",
            "url": "https://instagram.com/paul"
        }
    ],
    "links": [
        {
            "id": "9876",
            "url": "https://open.spotify.com/album/123",
            "title": "Album",
            "thumbnail": null,
            "visible": true,
            "version_id": null,
            "module_id": "5555",
            "order": 1
        }
    ],
    "modules": [
        {
            "id": "5555",
            "name": "Latest releases",
            "type": "GROUP",
            "order": 1,
            "visible": true,
            "thumbnail": null,
            "item_count": 12
        }
    ],
    "meta": {
        "duration_ms": 730,
        "attempts": 2,
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Profile Not Found | No public profile exists for this handle. |
| 503 | Upstream Unavailable | The profile could not be read from its source right now. Please retry. |
| 422 | Request Rejected Upstream | The source rejected this request, for example because the handle was not acceptable to it. |
| 503 | Profile Host Blocked the Request | The provider's bot protection refused this request after every available exit was tried. This is not a billing event; retry later. |
| 422 | Invalid Handle or URL | The handle was not in a supported format, or the URL did not belong to this endpoint's provider. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
