Submit Issue via API
Endpoint
POST https://issues.yadvin.tech/api/issues
Authentication
You must provide your Project API Key in the Authorization header using the Bearer token scheme.
You can generate and view your API Keys on the Projects page.
Request Payload (multipart/form-data)
To support attachments, the endpoint expects multipart/form-data instead of JSON.
| Field | Type | Description |
|---|---|---|
| title | Text (Required) | Short summary of the issue. Max 100 chars. |
| type | Text (Required) | One of: bug, feature, feedback. |
| description | Text | Detailed explanation or steps to reproduce. |
| Text | Email address of the user submitting the issue. | |
| device | Text | Device info (e.g. "iPhone 13 Pro - iOS 16"). |
| appVersion | Text | Your application version (e.g. "1.0.4"). |
| attachments | File[] | Optional files (max 3). Images will be automatically compressed. Max 5MB per file. |
Example Request (JavaScript / Fetch)
const formData = new FormData();
formData.append('title', 'App crashed on startup');
formData.append('type', 'bug');
formData.append('description', 'When I tap the sync button, the app closes immediately.');
formData.append('email', 'user@domain.com');
formData.append('device', 'Android 13');
formData.append('appVersion', '2.4.1');
// Append files (up to 3)
const fileInput = document.querySelector('input[type="file"]');
if (fileInput.files.length > 0) {
for (let i = 0; i < Math.min(fileInput.files.length, 3); i++) {
formData.append('attachments', fileInput.files[i]);
}
}
const response = await fetch('https://issues.yadvin.tech/api/issues', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_PROJECT_API_KEY'
// Do NOT set Content-Type to application/json, fetch sets multipart/form-data automatically
},
body: formData
});
const result = await response.json();
console.log(result);