Miryo API
Documentation/請求書生成API
POST/api/invoices/generate
請求書生成API
日本語フォーマットの請求書PDFを生成するAPIエンドポイントです。適格請求書(インボイス制度対応)としても発行可能です。顧客情報、発行者情報、請求明細を受け取り、Noto Sans JPフォントを使用したプロフェッショナルなPDF請求書を生成します。フォントサイズ、テーブルカラム構成、税率などを柔軟にカスタマイズでき、コンテンツに応じた自動ページ分割に対応しています。

最小限のリクエスト例(必須パラメータのみ)

curl -X POST https://api.miryo.ai/api/invoices/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "issuer": {
      "company": "miryo.AI株式会社"
    },
    "customer": {
      "company": "サンプル株式会社"
    },
    "invoice": {
      "subject": "Webシステム開発費用(2025年11月分)",
      "items": [
        {
          "name": "開発作業",
          "quantity": 10,
          "unitPrice": 80000,
          "amount": 800000
        }
      ]
    }
  }' \
  --output invoice.pdf

完全なリクエスト例(全オプション指定)

curl -X POST https://api.miryo.ai/api/invoices/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "issuer": {
      "company": "miryo.AI株式会社",
      "email": "info@miryo.ai",
      "phone": "050-1725-6435",
      "address": "東京都港区1-2-3 ミリョービル5F",
      "contactPerson": "経理部 佐藤次郎",
      "registrationNumber": "T1234567890123"
    },
    "customer": {
      "company": "サンプル株式会社",
      "name": "田中花子",
      "email": "tanaka@sample.co.jp",
      "phone": "03-9876-5432",
      "department": "情報システム部",
      "position": "部長",
      "nameKana": "タナカ ハナコ",
      "zipCode": "150-0001",
      "address": "東京都渋谷区神宮前1-1-1"
    },
    "invoice": {
      "invoiceNumber": "INV-2025-11-001",
      "invoiceDate": "2025-11-30T00:00:00.000Z",
      "paymentDueDate": "2025-12-31T23:59:59.000Z",
      "subject": "Webシステム開発費用(2025年11月分)",
      "items": [
        {
          "name": "要件定義",
          "majorCategory": "設計・開発",
          "description": "業務フロー分析、機能要件定義書作成(完了)",
          "quantity": 10,
          "unitPrice": 80000,
          "amount": 800000
        },
        {
          "name": "基本設計",
          "majorCategory": "設計・開発",
          "quantity": 15,
          "unitPrice": 80000,
          "amount": 1200000
        }
      ],
      "bankAccount": {
        "bankName": "みずほ銀行",
        "branchName": "渋谷支店",
        "accountType": "普通",
        "accountNumber": "1234567",
        "accountHolder": "ミリョーエーアイ(カ"
      },
      "taxRate": 0.1,
      "paymentTerms": "月末締め翌月末払い",
      "notes": "※お支払期日は2025年12月31日です。\n※振込手数料はご負担願います。",
      "showItemDescription": true,
      "qualifiedInvoice": true,
      "fontSize": {
        "customerCompany": 20,
        "customerName": 16
      },
      "tableColumns": {
        "showNo": true,
        "showMajorCategory": true
      }
    }
  }' \
  --output invoice.pdf

リクエストパラメータ

パラメータ必須説明
issuer.companystring必須発行者の会社名
customer.companystring必須顧客の会社名
customer.namestring任意顧客の担当者名(null可、指定しない場合は「様」も表示されません)
customer.emailstring任意顧客のメールアドレス(email形式、任意)
customer.phonestring任意顧客の電話番号(任意)
invoice.subjectstring必須請求件名・タイトル
invoice.itemsarray必須請求明細の配列(最低1件必要)
invoice.items[].namestring必須明細項目名
invoice.items[].quantitynumber必須数量(正の数値)
invoice.items[].unitPricenumber必須単価(0以上の数値)
invoice.items[].amountnumber必須金額(0以上の数値)= quantity × unitPrice
issuer.emailstring任意発行者のメールアドレス(デフォルト: 表示なし)
issuer.phonestring任意発行者の電話番号(デフォルト: 表示なし)
issuer.addressstring任意発行者の住所(デフォルト: 表示なし)
issuer.contactPersonstring任意発行者の担当者名(デフォルト: 表示なし)
issuer.registrationNumberstring任意インボイス登録番号(適格請求書発行時に推奨)
customer.departmentstring任意顧客の部署名(デフォルト: 表示なし)
customer.positionstring任意顧客の役職(デフォルト: 表示なし)
customer.nameKanastring任意顧客名のカナ表記(デフォルト: 表示なし)
customer.zipCodestring任意顧客の郵便番号(デフォルト: 表示なし)
customer.addressstring任意顧客の住所(デフォルト: 表示なし)
invoice.invoiceNumberstring任意請求番号(未指定時は自動生成: INV-{timestamp}
invoice.invoiceDatestring任意請求日(ISO 8601形式、デフォルト: 現在日時)
invoice.paymentDueDatestring任意支払期日(ISO 8601形式、デフォルト: 請求日+30日)
invoice.items[].descriptionstring任意明細項目の詳細説明(デフォルト: 表示なし)
invoice.items[].majorCategorystring任意大カテゴリ名(デフォルト: 表示なし、showMajorCategory: true で表示)
invoice.bankAccountobject任意振込先情報(デフォルト: 表示なし)
invoice.bankAccount.bankNamestring必須*銀行名(bankAccount指定時は必須)
invoice.bankAccount.branchNamestring必須*支店名(bankAccount指定時は必須)
invoice.bankAccount.accountTypestring必須*口座種別(普通・当座など、bankAccount指定時は必須)
invoice.bankAccount.accountNumberstring必須*口座番号(bankAccount指定時は必須)
invoice.bankAccount.accountHolderstring必須*口座名義(bankAccount指定時は必須)
invoice.notesstring任意備考欄(改行は\nで指定、デフォルト: 表示なし)
invoice.paymentTermsstring任意支払条件(デフォルト: 表示なし)
invoice.showItemDescriptionboolean任意明細の詳細説明を表示するか(デフォルト: false)
invoice.taxRatenumber任意消費税率 0.0~1.0(デフォルト: 0.1 = 10%)
invoice.qualifiedInvoiceboolean任意適格請求書として発行するか(デフォルト: false)
invoice.fontSizeobject任意フォントサイズカスタマイズ設定(デフォルト: システム標準値)
invoice.fontSize.customerCompanynumber任意顧客会社名のフォントサイズ(デフォルト: 20)
invoice.fontSize.customerNamenumber任意顧客担当者名のフォントサイズ(デフォルト: 16)
invoice.fontSize.customerOthernumber任意顧客その他情報のフォントサイズ(デフォルト: 10)
invoice.fontSize.issuerCompanynumber任意発行者会社名のフォントサイズ(デフォルト: 12)
invoice.fontSize.issuerNamenumber任意発行者担当者名のフォントサイズ(デフォルト: 10)
invoice.fontSize.issuerOthernumber任意発行者その他情報のフォントサイズ(デフォルト: 10)
invoice.fontSize.itemDetailnumber任意明細詳細のフォントサイズ(デフォルト: 9)
invoice.tableColumnsobject任意テーブル列の表示設定(デフォルト: 全てfalse)
invoice.tableColumns.showNoboolean任意No列を表示するか(デフォルト: false)
invoice.tableColumns.showMajorCategoryboolean任意大カテゴリ列を表示するか(デフォルト: false)

レスポンス

PDF Binary Data (application/pdf)

Response Headers:
Content-Type: application/pdf
Content-Disposition: attachment; filename="invoice-INV-2025-11-001.pdf"
X-Invoice-Number: INV-2025-11-001

注: 請求番号がリクエストで指定されていない場合、自動生成された番号がX-Invoice-Numberヘッダーに含まれます。

エラーレスポンス

400Bad Request - バリデーションエラー
{
  "error": "Invalid request data",
  "details": [
    {
      "code": "invalid_type",
      "expected": "string",
      "received": "undefined",
      "path": ["customer", "email"],
      "message": "Required"
    }
  ]
}
401Unauthorized - API Keyが未指定
{
  "error": "API key is required"
}

サンプルコード

JavaScript (Node.js)
const axios = require('axios');
const fs = require('fs');

async function generateInvoice() {
  const response = await axios.post(
    'https://api.miryo.ai/api/invoices/generate',
    {
      issuer: { 
        company: 'miryo.AI株式会社',
        registrationNumber: 'T1234567890123'
      },
      customer: {
        company: 'サンプル株式会社',
        name: '田中花子',
        email: 'tanaka@sample.co.jp',
        phone: '03-9876-5432'
      },
      invoice: {
        subject: 'Webシステム開発費用(2025年11月分)',
        items: [{
          name: '開発作業',
          quantity: 10,
          unitPrice: 80000,
          amount: 800000  // quantity × unitPrice
        }],
        qualifiedInvoice: true
      }
    },
    {
      headers: { 'x-api-key': 'your_api_key_here' },
      responseType: 'arraybuffer'
    }
  );

  fs.writeFileSync('invoice.pdf', response.data);
  console.log('Invoice Number:', response.headers['x-invoice-number']);
}
Python
import requests

def generate_invoice():
    response = requests.post(
        'https://api.miryo.ai/api/invoices/generate',
        headers={'x-api-key': 'your_api_key_here'},
        json={
            'issuer': {
                'company': 'miryo.AI株式会社',
                'registrationNumber': 'T1234567890123'
            },
            'customer': {
                'company': 'サンプル株式会社',
                'name': '田中花子',
                'email': 'tanaka@sample.co.jp',
                'phone': '03-9876-5432'
            },
            'invoice': {
                'subject': 'Webシステム開発費用(2025年11月分)',
                'items': [{
                    'name': '開発作業',
                    'quantity': 10,
                    'unitPrice': 80000,
                    'amount': 800000  # quantity × unitPrice
                }],
                'qualifiedInvoice': True
            }
        }
    )

    with open('invoice.pdf', 'wb') as f:
        f.write(response.content)

    invoice_number = response.headers.get('X-Invoice-Number')
    if invoice_number:
        print('Invoice Number:', invoice_number)

注意事項

  • 【重要】amount = quantity × unitPrice で計算してください
  • 【日付フォーマット】ISO 8601形式で指定(例: "2025-11-30T00:00:00.000Z")
  • 【税率】デフォルト0.1 (10%)。0.0~1.0の範囲で指定可能
  • 【適格請求書】適格請求書として発行する場合は、qualifiedInvoiceをtrueに設定し、issuer.registrationNumber(インボイス登録番号)を設定してください
  • 【自動改ページ】コンテンツに応じて自動的に改ページされます
  • 【データ保存】このAPIは請求書を保存しません。PDF生成のみを行います