API Reference

REST API

The IntlPull API lets you programmatically manage projects, translations, and keys. All endpoints return JSON and require authentication via API key.

Authentication

Include your API key in the Authorization header:

Authorization: Bearer your_api_key

Get your API key from the Dashboard Settings.

Base URL

https://api.intlpull.com

Endpoints

GET
/api/v1/projects

List all projects

Response:

{
  "projects": [
    {
      "id": "proj_abc123",
      "name": "My App",
      "sourceLanguage": "en",
      "targetLanguages": ["es", "fr", "de"],
      "stringCount": 1250
    }
  ]
}
GET
/api/v1/projects/:id/translations

Get all translations for a project

Response:

{
  "translations": {
    "en": {
      "common.welcome": "Welcome",
      "common.logout": "Log out"
    },
    "es": {
      "common.welcome": "Bienvenido",
      "common.logout": "Cerrar sesión"
    }
  }
}
POST
/api/v1/projects/:id/keys

Create a new translation key

Response:

{
  "key": {
    "id": "key_xyz789",
    "name": "common.submit",
    "value": "Submit",
    "namespace": "common"
  }
}
PUT
/api/v1/keys/:id

Update a translation key

Response:

{
  "key": {
    "id": "key_xyz789",
    "name": "common.submit",
    "translations": {
      "en": "Submit",
      "es": "Enviar"
    }
  }
}
DELETE
/api/v1/keys/:id

Delete a translation key

Response:

{
  "deleted": true
}
POST
/api/v1/projects/:id/import

Import translations from file

Response:

{
  "imported": 150,
  "updated": 25,
  "skipped": 0
}
GET
/api/v1/projects/:id/export

Export translations in various formats

Response:

{
  "common.welcome": "Welcome",
  "common.logout": "Log out"
}

Rate Limits

  • Free: 100 requests/minute
  • Starter: 500 requests/minute
  • Growth: 1,000 requests/minute
  • Professional: 5,000 requests/minute
  • Enterprise: Custom limits

Rate limit headers are included in all responses: X-RateLimit-Remaining

Error Codes

CodeDescription
400Bad request - check your parameters
401Unauthorized - invalid or missing API key
403Forbidden - insufficient permissions
404Not found - resource doesn't exist
429Rate limited - too many requests
500Server error - contact support