---
title: "Endorse a skill on a profile (safety limit: 50/day). Accepts provider_id (e.g. 'ACoAABGDkeIB...'), slug, or URL. Fails i"
method: POST
path: "/api/v1/network/endorse"
tags: ["network"]
---

# Endorse a skill on a profile (safety limit: 50/day). Accepts provider_id (e.g. 'ACoAABGDkeIB...'), slug, or URL. Fails i

`POST /api/v1/network/endorse`

## Request

- Base URL: `https://crispy.sh`
- URL: `https://crispy.sh/api/v1/network/endorse`
- Auth: HTTP bearer

## Request body

- object
  - `identifier` string, required: Profile identifier: provider_id (e.g. 'ACoAABGDkeIB...'), slug, or LinkedIn URL
  - `skill_name` string, required: Exact skill name as shown on the profile (case-sensitive match required)
  - `campaign_id` string: Campaign slug (from list_campaigns) to track this action under.

## Response `200`

Success

## Other responses

- `401`: Missing or expired API key
- `403`: Insufficient key scope or permission denied
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/crispy/apis/crispy-rest-api.md) · [All operations](https://skmtc.dev/crispy/apis/crispy-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crispy/apis/crispy-rest-api/revisions/6bed0974d9ce?raw)
