# SolanaLink > SolanaLink (solanalink.jp) is a Tokyo-based IT consulting company offering cloud solutions, web development, mobile apps, and EdTech products. The site features a trilingual (ja/en/zh) community blog with Reddit-style voting, reactions, and threaded comments. ## Company Pages - [Home](https://solanalink.jp/ja/): Company overview and product showcase - [About Us](https://solanalink.jp/ja/about-us/): Company background and team - [Our Services](https://solanalink.jp/ja/our-services/): Full service listing - [Contact](https://solanalink.jp/ja/contact-us/): Contact form and office information - [Careers](https://solanalink.jp/ja/careers/): Open positions - [Case Studies](https://solanalink.jp/ja/case-studies/): Client success stories - [Industries](https://solanalink.jp/ja/industries/): Industry solutions ## Service Pages - [IT Consulting](https://solanalink.jp/ja/it-consulting/): Strategy and technology consulting - [Cloud Solutions](https://solanalink.jp/ja/cloud-solutions/): AWS, Azure, GCP migration and management - [Web & E-commerce](https://solanalink.jp/ja/web-ecommerce/): Web application and online store development - [Mobile App Development](https://solanalink.jp/ja/mobile-app-development/): iOS and Android apps - [Data Analytics](https://solanalink.jp/ja/data-analytics/): Business intelligence and data solutions - [Security & Compliance](https://solanalink.jp/ja/security-compliance/): Cybersecurity and regulatory compliance - [Compliance & Investigations](https://solanalink.jp/ja/compliance-and-investigations/): AML/KYC solutions ## Products - [WordQuest](https://solanalink.jp/ja/products/wordquest/): Language learning app (App Store & Google Play) - [PickMe](https://solanalink.jp/ja/products/pickme/): Travel guide matching platform - [MinpakuX](https://solanalink.jp/ja/products/minpakux/): Vacation rental management ## Blog & News - [News & Blog List](https://solanalink.jp/ja/news-and-blog-list/): Community blog with tech articles, sorted by hot/new/top - [Blog](https://solanalink.jp/ja/blog/): Additional blog content ## Public API v1 (Read-Only, No Auth Required) Rate-limited (60 req/min per IP). CORS enabled. All responses include `X-RateLimit-*` headers. - `GET /api/v1/posts`: List published posts (paginated, sortable by hot/new/top, filterable by category/tag/search) - `GET /api/v1/posts/{slug}`: Get post detail by slug (includes full content) - `GET /api/v1/posts/{slug}/comments`: Get threaded comments for a post - `GET /api/v1/posts/trending`: Trending posts by hot score (last 7 days) - `GET /api/v1/categories`: List all categories with post counts - `GET /api/v1/categories/{slug}`: Posts filtered by category - `GET /api/v1/tags`: List all tags with post counts - `GET /api/v1/tags/{slug}`: Posts filtered by tag ## Internal API - `GET /api/posts`: List posts with full filtering - `GET /api/posts/{id}`: Get post by ID - `GET /api/posts/trending`: Trending posts + popular tags - `GET /api/reactions?postId={id}`: Get reaction counts for a post - `GET /api/health`: Service health check (database + Redis) ## Authenticated API Authentication via OAuth session cookie or API key (`Authorization: Bearer sl_live_...`). - `POST /api/posts`: Create a new blog post (AUTHOR+ role) - `PUT /api/posts/{id}`: Update a post - `DELETE /api/posts/{id}`: Delete a post - `POST /api/posts/{id}/vote`: Vote on a post (+1/-1) - `POST /api/posts/{id}/comments`: Add a comment - `PUT /api/comments/{id}`: Edit a comment - `DELETE /api/comments/{id}`: Delete a comment (soft/hard) - `POST /api/comments/{id}/vote`: Vote on a comment - `POST /api/reactions`: Toggle a reaction (heart, unicorn, fire, clap) - `POST /api/bookmarks`: Bookmark a post - `DELETE /api/bookmarks`: Remove a bookmark - `GET /api/bookmarks`: List user's bookmarks ## AI Endpoints - `POST /api/ai/chat`: Chat with SolanaLink's AI assistant (Claude via AWS Bedrock) - `POST /api/ai/stream`: Streaming AI chat via Server-Sent Events ## API Key Management (Session Auth Required) Scoped API keys for programmatic/agent access. Key format: `sl_live_{32chars}` or `sl_test_{32chars}`. - `POST /api/v1/auth/api-keys`: Create a new API key (max 10 per user) - `GET /api/v1/auth/api-keys`: List active API keys - `DELETE /api/v1/auth/api-keys/{id}`: Revoke an API key - `POST /api/v1/auth/api-keys/{id}/rotate`: Rotate a key (old key valid for 1 hour) Available scopes: `posts:read`, `posts:write`, `comments:read`, `comments:write`, `votes:write`, `reactions:write`, `bookmarks:write`, `ai:chat`, `profile:read`. ## Pre-Execution Authorization (API Key Only) High-risk operations via API key return 202 with a pending action requiring confirmation. - `GET /api/v1/actions/{id}`: Check pending action status - `POST /api/v1/actions/{id}/confirm`: Confirm a pending action (expires in 5 minutes) ## Feeds & Discovery - [OpenAPI Spec](https://solanalink.jp/api/openapi.json): OpenAPI 3.1 specification (40+ operations) - [Plugin Manifest](https://solanalink.jp/.well-known/ai-plugin.json): OpenAI plugin manifest - [A2A Agent Card](https://solanalink.jp/.well-known/agent.json): Agent-to-Agent discovery - [Training Dataset](https://solanalink.jp/datasets/solanalink-api-examples.jsonl): 45 instruction-response examples - [RSS Feed (ja)](https://solanalink.jp/ja/feed.xml): RSS 2.0, updated every 30 minutes - [RSS Feed (en)](https://solanalink.jp/en/feed.xml): English RSS feed - [Atom Feed (ja)](https://solanalink.jp/ja/atom.xml): Atom 1.0 - [Atom Feed (en)](https://solanalink.jp/en/atom.xml): English Atom feed - [Sitemap](https://solanalink.jp/sitemap.xml): XML sitemap with locale alternates - [Full API Reference](https://solanalink.jp/llms-full.txt): Extended documentation for LLM context ## Structured Data Schema.org JSON-LD present on all pages: Organization, LocalBusiness, Article (with CommentAction), BreadcrumbList, Service (with CommunicateAction), WebSite (with SearchAction), CollectionPage. ## Locales All public pages available in Japanese (`/ja/`), English (`/en/`), and Chinese (`/zh/`). ## Authentication Methods - OAuth 2.0: Google, GitHub, Twitter/X, Apple Sign-In - API Keys: Scoped keys with `sl_live_`/`sl_test_` prefix for agent/programmatic access - Native mobile: Capacitor-based Google and Apple sign-in with server-side token verification - Sessions: Database-backed via NextAuth.js v5 ## Error Responses All errors include self-healing metadata for agents: ```json { "error": "message", "code": "ERROR_CODE", "doc_url": "https://solanalink.jp/llms-full.txt#section", "is_retriable": false, "alternative_action": "suggestion" } ``` ## Rate Limiting All endpoints are rate-limited. Headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`. | Tier | Limit | Scope | |------|-------|-------| | Public read | 60/min | `/api/v1/*` unauthenticated | | Authenticated read | 120/min | Authenticated GET | | Authenticated write | 30/min | POST/PUT/DELETE | | AI chat | 10/min | `/api/ai/*` | | Contact | 5/15min | `/api/contact` | ## Tech Stack - Next.js 15 (App Router, standalone output) - MySQL 8.0 (Prisma ORM) - Redis 7 (caching, rate limiting) - AWS Bedrock (Claude AI) - TypeScript strict mode