## By hash or URL

**Group:** Cast APIs

Use this when you need: **By hash or URL**.

## Usage

```javascript
import { NeynarAPIClient, Configuration } from "@neynar/nodejs-sdk";

const client = new NeynarAPIClient(
  new Configuration({ apiKey: "YOUR_NEYNAR_API_KEY" })
);

const res = await client.lookupCastByHashOrUrl({
  identifier: "example", // Cast identifier (It's either a URL or a hash)
  type: "value", // The query param accepted by the API. Sent along with identifier param. url - Cast identifier is a url hash - Cast identifier is a hash
  // xNeynarExperimental: true,
  // viewerFid: 123,
});
console.log(res);
```

## Parameters

| Parameter              | Type                                    | Required | Description                                                                 |
| ---------------------- | --------------------------------------- | -------- | --------------------------------------------------------------------------- |
| `identifier`          | `string`                               | ✅       | Cast identifier (It's either a URL or a hash)                            |
| `type`                | `LookupCastByHashOrUrlTypeEnum`       | ✅       | The query param accepted by the API. Sent along with identifier param.
url - Cast identifier is a url
hash - Cast identifier is a hash |
| `xNeynarExperimental` | `boolean`                              | ❌       | -                                                                           |
| `viewerFid`           | `number`                               | ❌       | -                                                                           |

## Response

Returns a `RequestArgs` object.

## Error Handling

```javascript
try {
  const res = await client.lookupCastByHashOrUrl({
    identifier: "example",
    type: "value"
  });
  // use res
} catch (err) {
  // Axios/HTTP errors, invalid params, auth issues, etc.
  console.error(err);
}
```

## Tips

- Provide a **viewerFid** when supported to respect mutes/blocks and include `viewer_context`.
- Keep requests scoped (e.g., use `limit`) to improve latency.
- Cache results where sensible.
