Behance API Project Publishing: Image Hosting and OAuth 2.0 Requirements
Behance's API requires pre-hosted images and OAuth 2.0 for project publishing. Here's how to structure requests and avoid common pitfalls when automating portfolio updates.
20 Sept 2025, 13:53 UTC

The Challenge: Automating Creative Portfolio Updates
When building tools that help designers or agencies manage multiple Behance portfolios, the temptation is to automate project publishing. But the Behance API v2 has specific requirements around image hosting and OAuth 2.0 that can trip up developers expecting a simple file upload flow.
Core Requirements for Project Creation
The POST /v2/projects endpoint demands three elements: name, description, and cover_img_url. Unlike Instagram's direct upload API, Behance requires images to be hosted publicly before submission. This means your integration needs a CDN or web server layer to serve assets.
Required JSON structure:
{
"project": {
"name": "Project Title",
"description": "Detailed description",
"cover_img_url": "https://your-cdn.com/cover.jpg",
"extra_images": [
{"url": "https://your-cdn.com/image1.jpg", "description": "Process shot"}
]
}
}
Authentication and Rate Limits
Every request needs an OAuth 2.0 Bearer token with portfolio write permissions. The API enforces a 5,000 requests/hour limit per user, so batch operations need throttling. Tokens expire, requiring refresh token handling for any production system that runs longer than a few hours.
Worked Example: Creating a Test Project
Using curl from your terminal:
curl -X POST https://api.behance.net/v2/projects \\
-d 'project[name]=API Test Project' \\
-d 'project[description]=Created via API on 2026-11-12' \\
-d 'project[cover_img_url]=https://example.com/test-cover.jpg' \\
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
Expected response (HTTP 200):
{
"project": {
"id": 12345678,
"url": "https://www.behance.net/gallery/123456789/API-Test-Project",
"name": "API Test Project",
"created_at": "2026-11-12T20:45:00Z"
}
}
Verify success by visiting the returned URL in a browser.
Key Limitations and Trade-offs
- Image hosting dependency: You must maintain a separate hosting solution. Local file paths will fail validation.
- Public visibility default: Projects publish as public unless you set
visibilityfield (if supported by current API version). - Payload size constraints: Large images may be rejected; compress to under 8MB before hosting.
- No direct upload: Two-step process (host then reference) increases complexity over single-upload APIs.
Actionable Next Steps
To implement this successfully:
- Set up OAuth 2.0 flow to obtain write access tokens
- Host all images on a CDN accessible via HTTPS URL
- Implement request throttling to stay under 5,000/hour limits
- Test project creation with a single image before scaling to bulk operations
- Monitor token expiration and implement refresh logic
Check the official Behance API documentation for current field requirements and rate limit status before deployment.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.