Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Tumblr

ASecurity

Tumblr API Development and Integration

40 stars
0 votes
1 copies
37 views
Added 12/19/2025
developmentjavascriptpythongojavarubyphpbashtestingdebugginggit

Works with

cliapi

Security Analysis

A100/100

Scanned 2/12/2026

Install to Claude Code

$npx -y skills add rawveg/skillsforge-marketplace --skill tumblr --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tumblr?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Tumblr
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/rawveg-tumblr/badge)](https://www.skillsdirectory.com/skills/rawveg-tumblr)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: tumblr
description: Tumblr API Development and Integration
---

# Tumblr API Skill

Comprehensive assistance with Tumblr API development, authentication, and integration. This skill provides practical guidance for building applications that interact with Tumblr's platform.

## When to Use This Skill

This skill should be triggered when:
- Integrating with the Tumblr API (any version)
- Implementing OAuth 1.0a or OAuth 2.0 authentication for Tumblr
- Working with Tumblr blog data, posts, likes, or followers
- Building Tumblr clients, dashboard tools, or analytics applications
- Debugging Tumblr API requests or responses
- Understanding Tumblr's Neue Post Format (NPF) or legacy post types
- Managing rate limits or API quotas
- Handling Tumblr webhooks or real-time updates

## Quick Reference

### 1. Fetch Blog Information

Retrieve basic blog metadata including title, description, and post count:

```bash
curl -H 'User-Agent: MyApp/1.0' \
  'https://api.tumblr.com/v2/blog/staff.tumblr.com/info?api_key=YOUR_API_KEY'
```

**Response includes:** Blog title, URL, post count, description, avatar, theme settings.

### 2. Get Recent Posts

Retrieve the 5 most recent posts from a blog:

```bash
curl -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  'https://api.tumblr.com/v2/blog/staff.tumblr.com/posts?limit=5'
```

**Query parameters:**
- `limit`: 1-20 posts per request
- `offset`: Pagination offset
- `tag`: Filter by tag
- `npf=true`: Request Neue Post Format

### 3. OAuth 2.0 Token Exchange

Exchange authorization code for access token:

```bash
curl -X POST https://api.tumblr.com/v2/oauth2/token \
  -F grant_type=authorization_code \
  -F code=YOUR_AUTH_CODE \
  -F client_id=YOUR_CONSUMER_KEY \
  -F client_secret=YOUR_CONSUMER_SECRET
```

**Scopes:** `basic`, `write`, `offline_access`

### 4. Get Blog Avatar

Fetch blog avatar image URL:

```bash
curl 'https://api.tumblr.com/v2/blog/staff.tumblr.com/avatar/128'
```

**Available sizes:** 16, 24, 30, 40, 48, 64, 96, 128, 512 (default: 64)

### 5. Retrieve Liked Posts

Get posts liked by a blog:

```bash
curl -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  'https://api.tumblr.com/v2/blog/staff.tumblr.com/likes?limit=20&offset=0'
```

**Parameters:** `limit`, `offset`, `before` (timestamp), `after` (timestamp)

### 6. Queue Management

Retrieve queued posts:

```bash
curl -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  'https://api.tumblr.com/v2/blog/myblog.tumblr.com/posts/queue'
```

Reorder queue:

```bash
curl -X POST https://api.tumblr.com/v2/blog/myblog.tumblr.com/posts/queue/reorder \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -d 'post_id=123456789'
```

### 7. Get Followers

Retrieve blog followers:

```bash
curl -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  'https://api.tumblr.com/v2/blog/myblog.tumblr.com/followers'
```

**Response includes:** Total follower count, follower blog objects with names and URLs.

### 8. Filter Posts by Tag

Retrieve posts with specific tag:

```bash
curl -H 'User-Agent: MyApp/1.0' \
  'https://api.tumblr.com/v2/blog/staff.tumblr.com/posts?api_key=YOUR_KEY&tag=photography&limit=10'
```

### 9. Standard API Response Format

All Tumblr API responses follow this structure:

```json
{
  "meta": {
    "status": 200,
    "msg": "OK"
  },
  "response": {
    "blog": { },
    "posts": [ ]
  }
}
```

### 10. Working with Blog Identifiers

Three interchangeable identifier formats:

```bash
# Blog name
/v2/blog/staff/info

# Hostname
/v2/blog/staff.tumblr.com/info

# UUID (stable, persistent)
/v2/blog/t:0aY0xL2Fi1OFJg4YxpmegQ/info
```

**Recommendation:** Use UUID for long-term stability (survives blog renames).

## Key Concepts

### Authentication Levels

1. **None** - Public endpoints (blog info, public posts) require no authentication
2. **API Key** - Use OAuth Consumer Key as `api_key` query parameter
3. **OAuth** - Signed requests using OAuth 1.0a or OAuth 2.0 for user-specific data

### Rate Limits

**Per IP Address:**
- 300 calls/minute
- 18,000 calls/hour
- 432,000 calls/day

**Per Consumer Key:**
- 1,000 calls/hour
- 5,000 calls/day

**Action Limits:**
- 250 posts/day
- 200 follows/day
- 1,000 likes/day

### Post Formats

**Legacy Post Types:**
- Text, Photo, Quote, Link, Chat, Audio, Video, Answer

**Neue Post Format (NPF):**
- Modern block-based format
- Posts with `type: blocks` or `is_blocks_post_format: true`
- Request with `npf=true` parameter
- Contains `content` (blocks), `layout` (specifications), `trail` (reblog chain)

### Post IDs

Post IDs are 64-bit integers. **Important:** Use `id_string` field for JavaScript or languages with unsafe integer handling.

### Required Headers

**User-Agent:** Mandatory for all requests. Must be consistent. Format: `AppName/Version`

**Content-Type:** Required for POST/PUT with body. Accepted:
- `application/json`
- `application/x-www-form-urlencoded`
- `multipart/form-data`

## Reference Files

This skill includes comprehensive documentation in `references/`:

- **api.md** - Complete Tumblr API documentation including:
  - All authentication methods (OAuth 1.0a, OAuth 2.0, API key)
  - Blog endpoints (info, posts, avatar, likes, following, followers)
  - User endpoints (dashboard, likes, following)
  - Post creation and management
  - Queue and draft management
  - Neue Post Format (NPF) specification
  - Legacy post type fields
  - Rate limits and best practices
  - Response format documentation

Use the `view` command to read specific reference files when detailed information is needed.

## Working with This Skill

### For Beginners

1. **Start with public endpoints** - No authentication needed:
   - Fetch blog info: `/v2/blog/{blog}/info?api_key={key}`
   - Get public posts: `/v2/blog/{blog}/posts?api_key={key}`

2. **Register your application:**
   - Visit https://www.tumblr.com/oauth/apps
   - Get OAuth Consumer Key and Secret
   - Use Consumer Key as `api_key` for public endpoints

3. **Test with API Console:**
   - https://api.tumblr.com/console
   - Interactive testing environment

### For OAuth Implementation

1. **Choose OAuth version:**
   - OAuth 2.0: Modern, simpler, bearer tokens
   - OAuth 1.0a: Legacy, more complex, signed requests

2. **OAuth 2.0 flow:**
   - Redirect user to authorization URL with scopes
   - Exchange authorization code for access token
   - Use token in `Authorization: Bearer {token}` header

3. **OAuth 1.0a flow:**
   - Request temporary credentials
   - Redirect user to authorize
   - Exchange verifier for access token
   - Sign all requests with token

### For Advanced Features

1. **Neue Post Format (NPF):**
   - Add `npf=true` to any post-returning endpoint
   - Work with content blocks and layout objects
   - Access full reblog trail

2. **Pagination:**
   - Use `offset` for numeric pagination
   - Use `before`/`after` with timestamps for chronological navigation
   - Check `_links` object for next/previous URLs

3. **Partial responses:**
   - Use `fields` parameter to specify blog object fields
   - Reduces response size and improves performance

4. **JSONP support:**
   - Add `jsonp=callbackName` to GET requests
   - Useful for client-side JavaScript

## Common Patterns

### Authentication Flow (OAuth 2.0)

```bash
# Step 1: Redirect user to authorization URL
https://www.tumblr.com/oauth2/authorize?client_id={key}&response_type=code&scope=basic%20write&state={random}

# Step 2: User authorizes, Tumblr redirects back with code
# Your redirect URL receives: ?code={auth_code}

# Step 3: Exchange code for access token
curl -X POST https://api.tumblr.com/v2/oauth2/token \
  -F grant_type=authorization_code \
  -F code={auth_code} \
  -F client_id={consumer_key} \
  -F client_secret={consumer_secret}

# Step 4: Use access token in requests
curl -H 'Authorization: Bearer {access_token}' \
  'https://api.tumblr.com/v2/user/info'
```

### Error Handling

```json
{
  "meta": {
    "status": 401,
    "msg": "Unauthorized"
  },
  "response": [ ],
  "errors": [
    {
      "title": "Unauthorized",
      "code": 401,
      "detail": "OAuth authentication required"
    }
  ]
}
```

**Common status codes:**
- 200: Success
- 401: Unauthorized (missing/invalid credentials)
- 404: Not Found (blog or post doesn't exist)
- 429: Rate Limit Exceeded
- 503: Service Temporarily Unavailable

### Handling Large Post Counts

```bash
# Fetch all posts using pagination
offset=0
limit=20

while true; do
  curl "https://api.tumblr.com/v2/blog/staff.tumblr.com/posts?api_key={key}&limit=${limit}&offset=${offset}"
  offset=$((offset + limit))
  # Check if response contains fewer than 'limit' posts, then break
done
```

## Resources

### Official Links

- **API Console:** https://api.tumblr.com/console
- **Developer Portal:** https://www.tumblr.com/docs/api/v2
- **OAuth Apps:** https://www.tumblr.com/oauth/apps
- **Support:** https://www.tumblr.com/support

### Official Clients

- JavaScript: `tumblr.js`
- Ruby: `tumblr_client`
- PHP: `tumblr/tumblr`
- Python: `pytumblr`
- Java: `jumblr`
- Objective-C: `TMTumblrSDK`
- Go: `tumblr/tumblr.go`

### Best Practices

1. **Always include User-Agent header** - Inconsistent or missing User-Agent may result in suspension
2. **Respect rate limits** - Implement exponential backoff for 429 responses
3. **Use UUIDs for blog identifiers** - More stable than blog names (survive renames)
4. **Cache blog info** - Reduce API calls by caching static blog data
5. **Use NPF for new integrations** - Legacy formats may be deprecated
6. **Handle 64-bit integers carefully** - Use `id_string` for JavaScript
7. **Validate responses** - Check `meta.status` before processing `response`

## Notes

- This skill was generated from official Tumblr API documentation
- All endpoints use base URL: `https://api.tumblr.com`
- API version is included in path: `/v2/`
- HTTPS is required for all API requests
- Reference files preserve structure and examples from source docs
- Code examples include language detection for better syntax highlighting

## Updating

To refresh this skill with updated documentation:
1. Re-run the scraper with the same configuration
2. The skill will be rebuilt with the latest information from the official GitHub repository

Attribution

rawvegrawveg
View sourceMore from rawveg →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284072 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →