API Reference

Complete REST API reference for the Pictograph Developer API.

The Pictograph API is organized around REST. It has predictable resource-oriented URLs, accepts JSON request bodies, returns JSON responses, and uses standard HTTP response codes and authentication.

Base URL

https://api.pictograph.io/api/v1/developer

All API requests should be made to this base URL. Endpoints are appended to this path.

API Architecture

The API follows a hierarchical resource structure:

TEXT
Organization
├── Datasets (projects)
│   ├── Images
│   │   └── Annotations
│   └── Exports
└── API Keys
  • Organization: Your workspace containing all datasets and resources
  • Datasets: Collections of images for annotation (called "projects" in the app)
  • Images: Individual images within a dataset
  • Annotations: Labels attached to images (bboxes, polygons, etc.)
  • Exports: Downloadable ZIP archives of annotated datasets

Authentication

Include your API key in the X-API-Key header with every request. See Authentication for details.

Endpoints

Resource Description
Datasets List, get, and download datasets
Images Upload, download, and manage images
Annotations Create, read, update, and delete annotations
Exports Create and download dataset exports

Response Format

All responses are JSON. Successful responses return the requested data:

{
  "id": "dataset-uuid",
  "name": "My Dataset",
  "image_count": 150,
  ...
}

Error responses include an error code and message:

{
  "error": "not_found",
  "message": "Dataset not found"
}

HTTP Status Codes

Status Meaning
200 Success
201 Resource created
400 Bad request - check your parameters
401 Unauthorized - invalid API key
403 Forbidden - insufficient permissions
404 Resource not found
429 Rate limit exceeded
500 Server error

Pagination

List endpoints support pagination with limit and offset parameters:

GET /datasets/?limit=50&offset=100
Parameter Default Max Description
limit 100 1000 Number of items to return
offset 0 - Number of items to skip

Pagination Example

JSON
// Request: GET /datasets/?limit=2&offset=0

[
  {
    "id": "a1b2c3d4-...",
    "name": "Training Dataset",
    "image_count": 1250,
    "completed_image_count": 1100
  },
  {
    "id": "e5f6g7h8-...",
    "name": "Validation Dataset",
    "image_count": 320,
    "completed_image_count": 320
  }
]

Rate Limit Headers

All responses include headers to help you track your rate limit usage:

Header Description
X-RateLimit-Limit Your maximum requests per hour
X-RateLimit-Remaining Requests remaining in current window
X-RateLimit-Reset Unix timestamp when the window resets
Retry-After Seconds to wait (only on 429 responses)
Bash
# Example response headers
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1706140800

See Rate Limits for detailed information about quotas by plan.

Copied to clipboard