Developer Docs

ArtWire
REST API

Programmatically manage press releases, campaigns, and media contacts. Available on the Agency plan.

Authentication

All API requests require a Bearer token in the Authorization header. API keys are available to users on the Agency plan.

To create an API key, go to Settings → API Keys in your ArtWire dashboard. The key is shown only once at creation time; store it securely.

Example header
Authorization: Bearer aw_live_abc123...

All requests must be made over HTTPS. Requests without a valid token receive a 401 response.

Rate Limits

The API allows 60 requests per minute per IP address. When the limit is exceeded, the API returns a 429 status with these headers:

ParameterTypeRequiredDescription
Retry-AfterintegerOptionalSeconds until the rate limit window resets
X-RateLimit-LimitintegerOptionalMaximum requests allowed per window (60)
X-RateLimit-RemainingintegerOptionalRequests remaining in the current window
X-RateLimit-ResetintegerOptionalUnix timestamp when the window resets

Error Handling

All error responses return a JSON object with an error field. Validation errors also include a details object.

Error response example
{
  "error": "Validation failed",
  "details": {
    "title": ["Title is required"]
  }
}
200Request succeeded
201Resource created
400Bad request — invalid parameters or body
401Unauthorized — missing or invalid API key
403Forbidden — plan does not include API access
429Too many requests — rate limit exceeded
500Internal server error
GET/api/v1/press-releases

Returns a paginated list of the authenticated user's press releases, ordered by creation date (newest first).

Query Parameters

ParameterTypeRequiredDescription
limitintegerOptionalNumber of results per page (1-100, default 20)
offsetintegerOptionalNumber of results to skip (default 0)
statusstringOptionalFilter by status: "draft", "published", or "archived"

Request

curl
curl https://artwire.art/api/v1/press-releases?limit=10&offset=0 \
  -H "Authorization: Bearer aw_live_abc123..."

Response

200 OK
{
  "data": [
    {
      "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "title": "Maria Alvarez: Luminous Threads",
      "subtitle": "A solo exhibition at Tate Modern",
      "body": "Tate Modern is pleased to announce...",
      "category": "exhibition_opening",
      "artist_name": "Maria Alvarez",
      "venue_name": "Tate Modern",
      "exhibition_title": "Luminous Threads",
      "location": "London, UK",
      "start_date": "2026-05-01",
      "end_date": "2026-08-15",
      "status": "published",
      "slug": "maria-alvarez-luminous-threads-m3kx9",
      "created_at": "2026-04-01T10:30:00Z",
      "updated_at": "2026-04-01T10:30:00Z"
    }
  ],
  "meta": {
    "total": 42,
    "limit": 10,
    "offset": 0
  }
}

Status Codes

200Press releases returned successfully
400Invalid query parameters
401Unauthorized
403API access not included in plan
POST/api/v1/press-releases

Creates a new press release. Returns the created resource.

Body Parameters

ParameterTypeRequiredDescription
titlestringRequiredTitle of the press release (max 500 chars)
bodystringRequiredFull body text of the press release
subtitlestringOptionalSubtitle or tagline (max 500 chars)
categorystringOptionalCategory slug (e.g. "exhibition_opening", "art_fair", "artist_award")
artist_namestringOptionalName of the featured artist
venue_namestringOptionalGallery or venue name
exhibition_titlestringOptionalExhibition title if applicable
locationstringOptionalCity and country (e.g. "London, UK")
start_datestringOptionalExhibition start date (ISO 8601)
end_datestringOptionalExhibition end date (ISO 8601)
statusstringOptional"draft" (default) or "published"

Request

curl
curl -X POST https://artwire.art/api/v1/press-releases \
  -H "Authorization: Bearer aw_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Maria Alvarez: Luminous Threads",
    "subtitle": "A solo exhibition at Tate Modern",
    "body": "Tate Modern is pleased to announce...",
    "category": "exhibition_opening",
    "artist_name": "Maria Alvarez",
    "venue_name": "Tate Modern",
    "location": "London, UK",
    "start_date": "2026-05-01",
    "end_date": "2026-08-15",
    "status": "draft"
  }'

Response

201 Created
{
  "data": {
    "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "title": "Maria Alvarez: Luminous Threads",
    "subtitle": "A solo exhibition at Tate Modern",
    "body": "Tate Modern is pleased to announce...",
    "category": "exhibition_opening",
    "artist_name": "Maria Alvarez",
    "venue_name": "Tate Modern",
    "exhibition_title": null,
    "location": "London, UK",
    "start_date": "2026-05-01",
    "end_date": "2026-08-15",
    "status": "draft",
    "slug": "maria-alvarez-luminous-threads-m3kx9",
    "created_at": "2026-04-01T10:30:00Z",
    "updated_at": "2026-04-01T10:30:00Z"
  }
}

Status Codes

201Press release created successfully
400Validation error in request body
401Unauthorized
403API access not included in plan
COMING SOON/api/v1/campaigns

Create campaigns, add recipients, send emails, and track open/click metrics programmatically. This endpoint is under development.

COMING SOON/api/v1/media-contacts

Search and filter the ArtWire media contact database. Look up journalists by beat, region, publication, and more.

COMING SOON/api/v1/ai/generate

Generate press releases using ArtWire's AI engine via the API. Provide a category and details, and receive a full press release draft.

Ready to integrate?

API access is available on the Agency plan. Upgrade your account to get your API key.