# Shorten Link — Shorten.REST

> Shortens a given long URL into an alias. If the alias name is not provided, the system generates one. If the domain input is not provided, it defaults to short.fyi. See the documentation

- Key: `shorten_rest-short-link`
- Type: Action (Write)
- Version: 0.0.3
- App: Shorten.REST (`shorten_rest`) — https://pipedream.com/apps/shorten-rest.md
- This page (HTML): https://pipedream.com/apps/shorten-rest/actions/short-link
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/shorten_rest/actions/short-link/short-link.mjs

## Description

Shortens a given long URL into an alias. If the alias name is not provided, the system generates one. If the domain input is not provided, it defaults to short.fyi. [See the documentation](https://docs.shorten.rest/#tag/Alias/operation/CreateAlias)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `domainName` | `string` | No | The domain which alias will belong to (string without http/https or /). Eg. your.domain.com. Defaults to short.fyi |
| `aliasName` | `string` | No | Alias (without / at the beginning). Eg. aBcDe012. Defaults to @rnd |
| `destinations` | `string[]` | Yes | Array of objects (DestinationModel). Where each row should be a JSON object like this: {"url": "mydomain.com"}. Please read the docs here |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "shorten_rest",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "shorten_rest-short-link",
  arguments: {
    domainName: "Domain Name",
    aliasName: "Alias Name",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "shorten_rest-short-link",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    shorten_rest: { authProvisionId: "apn_xxxxxxx" },
    domainName: "Domain Name",
    aliasName: "Alias Name",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "shorten_rest-short-link",
    "configured_props": {
      "shorten_rest": { "authProvisionId": "apn_xxxxxxx" },
      "domainName": "Domain Name",
      "aliasName": "Alias Name"
    }
  }'
```

---

- App: https://pipedream.com/apps/shorten-rest.md · All apps: https://pipedream.com/apps
