integration-assets

📁 picahq/skills 📅 Jan 28, 2026
1
总安装量
1
周安装量
#55295
全站排名
安装命令
npx skills add https://github.com/picahq/skills --skill integration-assets

Agent 安装分布

windsurf 1
opencode 1
cursor 1
continue 1
claude-code 1

Skill 文档

Integration Assets

Retrieve logos and images for Pica-supported integrations.

Overview

Pica provides logos and images for all 200+ supported integrations. Use this skill to display integration icons in your UI, documentation, or marketing materials.

Prerequisites


Quick Reference

Asset URL Pattern

All integration assets follow this pattern:

https://assets.picaos.com/logos/{platform}.svg

Examples:

  • Gmail: https://assets.picaos.com/logos/gmail.svg
  • Slack: https://assets.picaos.com/logos/slack.svg
  • HubSpot: https://assets.picaos.com/logos/hubspot.svg

Common Platform IDs

Integration Platform ID Asset URL
Gmail gmail https://assets.picaos.com/logos/gmail.svg
Google Calendar google-calendar https://assets.picaos.com/logos/google-calendar.svg
Slack slack https://assets.picaos.com/logos/slack.svg
HubSpot hubspot https://assets.picaos.com/logos/hubspot.svg
Salesforce salesforce https://assets.picaos.com/logos/salesforce.svg
Notion notion https://assets.picaos.com/logos/notion.svg
Linear linear https://assets.picaos.com/logos/linear.svg
GitHub github https://assets.picaos.com/logos/github.svg
Jira jira https://assets.picaos.com/logos/jira.svg
Asana asana https://assets.picaos.com/logos/asana.svg
Stripe stripe https://assets.picaos.com/logos/stripe.svg
Shopify shopify https://assets.picaos.com/logos/shopify.svg
Zendesk zendesk https://assets.picaos.com/logos/zendesk.svg
Intercom intercom https://assets.picaos.com/logos/intercom.svg
Airtable airtable https://assets.picaos.com/logos/airtable.svg

Fetching Assets from API

The recommended way to get integration assets is via the Available Connectors API, which returns the official image URL for each integration.

API Request

GET https://api.picaos.com/v1/available-connectors?limit=300
Headers:
  x-pica-secret: YOUR_PICA_SECRET_KEY

Response Structure

{
  "rows": [
    {
      "platform": "gmail",
      "name": "Gmail",
      "category": "Communication",
      "image": "https://assets.picaos.com/logos/gmail.svg",
      "description": "..."
    },
    {
      "platform": "slack",
      "name": "Slack",
      "category": "Communication",
      "image": "https://assets.picaos.com/logos/slack.svg",
      "description": "..."
    }
  ],
  "total": 200,
  "pages": 1,
  "page": 1
}

Key Fields

Field Description
platform Platform identifier (use for constructing URLs)
name Display name
image Official logo URL
category Integration category

Implementation

Fetch All Integration Assets

interface Integration {
  platform: string;
  name: string;
  image: string;
  category: string;
}

async function getIntegrations(): Promise<Integration[]> {
  const response = await fetch(
    "https://api.picaos.com/v1/available-connectors?limit=300",
    {
      headers: {
        "x-pica-secret": process.env.PICA_SECRET_KEY,
      },
    }
  );

  if (!response.ok) {
    throw new Error(`Failed to fetch integrations: ${response.status}`);
  }

  const data = await response.json();
  return data.rows;
}

Build Asset URL from Platform ID

function getIntegrationLogo(platform: string): string {
  return `https://assets.picaos.com/logos/${platform}.svg`;
}

// Usage
const gmailLogo = getIntegrationLogo("gmail");
// => "https://assets.picaos.com/logos/gmail.svg"

Display Integration with Logo

function IntegrationCard({ integration }) {
  const [imgError, setImgError] = useState(false);

  return (
    <div className="integration-card">
      {!imgError ? (
        <img
          src={integration.image}
          alt={integration.name}
          onError={() => setImgError(true)}
        />
      ) : (
        <div className="fallback-icon">
          {integration.name.charAt(0).toUpperCase()}
        </div>
      )}
      <span>{integration.name}</span>
    </div>
  );
}

With Fallback URLs

If the primary asset URL fails, fall back to a generic icon service:

function getIntegrationLogo(platform: string, primaryUrl?: string): string {
  // Use API-provided URL if available
  if (primaryUrl) {
    return primaryUrl;
  }

  // Construct from pattern
  return `https://assets.picaos.com/logos/${platform}.svg`;
}

function getFallbackLogo(platform: string): string {
  // SimpleIcons as fallback
  return `https://cdn.simpleicons.org/${platform}`;
}

Caching Assets

For production applications, cache the integration list to reduce API calls:

let cachedIntegrations: Integration[] | null = null;
let cacheTime: number = 0;
const CACHE_DURATION = 60 * 60 * 1000; // 1 hour

async function getIntegrationsCached(): Promise<Integration[]> {
  const now = Date.now();

  if (cachedIntegrations && now - cacheTime < CACHE_DURATION) {
    return cachedIntegrations;
  }

  cachedIntegrations = await getIntegrations();
  cacheTime = now;

  return cachedIntegrations;
}

Filtering by AuthKit Support

To get only integrations that support OAuth via AuthKit:

GET https://api.picaos.com/v1/available-connectors?authkit=true&limit=300

This filters to integrations that can be connected via the AuthKit widget.


Asset Specifications

Property Value
Format SVG (scalable)
Background Transparent
Recommended display size 24×24 to 64×64 px
Color Original brand colors

Troubleshooting

Issue Cause Solution
404 on asset URL Invalid platform ID Verify platform ID from API response
Image not loading CORS or network issue Use img tag or proxy through your server
Wrong logo displayed Platform ID mismatch Use exact platform value from API, not display name
Blurry logo Scaling PNG Assets are SVG, ensure proper rendering

API Reference

Endpoints

Endpoint Description
GET /v1/available-connectors List all integrations with assets
GET /v1/available-connectors?authkit=true List OAuth-enabled integrations

Asset URL

https://assets.picaos.com/logos/{platform}.svg

Replace {platform} with the platform identifier from the API response.

Documentation