Skip to main content

Documentation Index

Fetch the complete documentation index at: https://help.scribe-mail.com/llms.txt

Use this file to discover all available pages before exploring further.

Scribe API

Scribe is a B2B SaaS for email signature management. This skill lets you query Scribe’s public REST API to retrieve signature status, campaign analytics, user/team data, and conversion tracking information. Base URL: https://api.scribe.com/v1

Authentication

Every request requires an API key scoped to an organization:
Authorization: Bearer sk_live_<org_api_key>
Get API keys from Settings → API in the Scribe dashboard at https://app.scribe.com/settings/api.

Response format

All responses are JSON with a consistent envelope:
{
  "data": [ ... ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 142,
    "total_pages": 6
  }
}
Single-resource responses use "data": { ... } (object, not array). Errors return:
{
  "error": {
    "code": "not_found",
    "message": "Campaign with id 'abc' not found",
    "status": 404
  }
}

Pagination

Use ?page=N&per_page=N on list endpoints. Default is 25 per page, max 100.

Core endpoints

Signatures

MethodPathDescription
GET/signaturesList all signatures. Filter: ?status=active|pending|disabled&team_id=<id>&user_id=<id>
GET/signatures/Get a single signature with deployment details
GET/signatures/statsAggregated signature stats (total, active, pending, disabled)
Common task — find pending signatures:
curl -H "Authorization: Bearer $SCRIBE_API_KEY" \
  "https://api.scribe.com/v1/signatures?status=pending"

Campaigns

MethodPathDescription
GET/campaignsList all campaigns. Filter: ?status=active|paused|ended
GET/campaigns/Get campaign details including banner info
GET/campaigns//analyticsCampaign analytics: CTR, impressions, clicks. Filter: ?date_from=YYYY-MM-DD&date_to=YYYY-MM-DD
Common task — get campaign CTR:
curl -H "Authorization: Bearer $SCRIBE_API_KEY" \
  "https://api.scribe.com/v1/campaigns/camp_abc123/analytics?date_from=2026-01-01&date_to=2026-03-19"
The analytics response includes:
{
  "data": {
    "campaign_id": "camp_abc123",
    "impressions": 45200,
    "clicks": 1356,
    "ctr": 3.0,
    "unique_clicks": 892,
    "date_from": "2026-01-01",
    "date_to": "2026-03-19"
  }
}

Users and Teams

MethodPathDescription
GET/usersList users. Filter: ?team_id=<id>&status=active|invited|disabled
GET/users/Get user details and signature assignment
GET/teamsList teams
GET/teams/Get team with deployment status
GET/teams//membersList team members with signature status
Common task — find users with pending installs:
curl -H "Authorization: Bearer $SCRIBE_API_KEY" \
  "https://api.scribe.com/v1/users?status=invited"

Analytics

MethodPathDescription
GET/analytics/clicksAggregated click data. Filter: ?date_from=&date_to=&group_by=day|week|month
GET/analytics/impressionsAggregated impression data. Same filters.
GET/analytics/summaryHigh-level overview: total clicks, impressions, CTR, active signatures

Conversion Tracking

MethodPathDescription
GET/conversionsList conversion events. Filter: ?date_from=&date_to=&campaign_id=<id>
GET/conversions/configCurrent tracking configuration

Webhooks

MethodPathDescription
POST/webhook_endpointsCreate a webhook endpoint. Body: { "url", "events", "description" }
GET/webhook_endpointsList all webhook endpoints. Filter: ?status=active|paused|disabled
PATCH/webhook_endpoints/Update endpoint URL, events, description, or status
DELETE/webhook_endpoints/Delete an endpoint and its delivery history
POST/webhook_endpoints//testSend a test.ping event to verify the endpoint
POST/webhook_endpoints//rotate_secretRotate the HMAC signing secret
GET/webhook_endpoints//deliveriesList delivery history. Filter: ?status=delivered|failed
Available webhook event types: conversion.completed, campaign.created, campaign.updated, signature_template.updated, teammate.added, teammate.removed, test.ping. Use ["*"] to subscribe to all.

Rate limits

  • 100 requests per minute per API key
  • Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • On 429: back off and retry after Retry-After seconds

Common agent workflows

  1. “How many teammates have pending signatures?”GET /signatures/stats → read pending count → Or GET /signatures?status=pending for the full list
  2. “What’s the CTR on our spring campaign?”GET /campaigns → find campaign by name → GET /campaigns/{id}/analytics → read ctr
  3. “Show me click trends this quarter”GET /analytics/clicks?date_from=2026-01-01&group_by=week
  4. “Which teams haven’t finished deploying?”GET /teams → check each team’s deployment_status → Or GET /users?status=invited for individual pending users
  5. “Pull conversion data for retargeting”GET /conversions?date_from=2026-03-01&campaign_id=camp_abc123
  6. “Set up a webhook for conversion events”POST /webhook_endpoints with { "url": "https://...", "events": ["conversion.completed"] } → Save the secret from the response for HMAC verification
  7. “Check for failed webhook deliveries”GET /webhook_endpoints → find the endpoint → GET /webhook_endpoints/{id}/deliveries?status=failed

Edge cases

  • Date filters use YYYY-MM-DD format. Omitting dates returns last 30 days.
  • Empty results return "data": [] with "total": 0, not an error.
  • Campaign analytics return "ctr": 0 when there are zero impressions (no division error).
  • IDs use prefixed format: sig_, camp_, team_, usr_, conv_.

Full docs

OpenAPI spec and interactive playground: https://scribe.mintlify.app