Updating your request header
| Legacy API | New API | |
|---|---|---|
| Base URL | https://app.beyondwords.io/api/v4 | https://api.beyondwords.io/v1 |
| Authentication header | 'Authorization' | 'X-Api-Key' |
| Authentication value | Your API key | Your API key |
Example requests
Key differences
- Base URL:
https://api.beyondwords.io/v1(replaceshttps://app.beyondwords.io/api/v4) - Authentication:
X-Api-Key(replacesAuthorizationheader)
Endpoint and request body updates
| Legacy API | New API | |
|---|---|---|
| Endpoint | /projects/{project_id}/audio | /projects/{project_id}/content |
| Title format | Plain text | Plain text or HTML-formatted (e.g., <h1>Title</h1>)—HTML preferred. |
| Body format | Plain text | Plain text or HTML-formatted (e.g., <p>Body</p>)—HTML preferred. |
| Content ID handling | Set using 'external_id' | Set using 'source_id' |
Example requests
Example response
This is not a full response. It has been shortened to highlight the main differences. For more details on what a full response looks like, please visit our documentation.
Key differences
In the legacy API response, the returned ID is a numeric “podcast” id , which will no longer be used. In contrast, the new API returns a stringcontent_id, which will remain the standard identifier moving forward.
While setting a source_id when creating content is optional, doing so eliminates the need to store the content_id from the response. Without a source_id, you may need to save the content_id separately to embed the player. By setting the source_id as the article ID you may have already set, you can easily use this to embed the BeyondWords player without additional data handling.
Migration steps
Update request header method
- Legacy API: Uses the
Authorizationheader with the API key. - New API: Requires the
X-Api-Keyheader with the API key. - Note: The API key value itself remains the same
Update endpoints
Replace old API endpoints with the new ones:
- Legacy API:
/projects/{project_id}/audio - New API:
/projects/{project_id}/content— see Create and generate content - Also update: Any other endpoints you’re using
Handle ID changes
- Legacy API: Returns a numeric “podcast” id (deprecated).
- New API: Returns a string-based UUID “content” id.
- Action required: Update any code that expects or processes the ID
Use source_id for easier integration
- Change field name from
external_idtosource_idin your requests - Setting a
source_idwhen creating content is optional but recommended - If you set
source_idto match your existing article ID, you can use it to embed the BeyondWords player without needing to store the content_id from the response
FAQ
Will my existing API key still work?
Will my existing API key still work?
Yes, your API key will continue to work. Only the header name and endpoints are changing.
What happens if I don't migrate by the deadline?
What happens if I don't migrate by the deadline?
After Q2 2025, the legacy API will be shut down and any applications using it will receive errors.
Can I use both APIs during the transition period?
Can I use both APIs during the transition period?
Yes, both APIs will be available until the deprecation date to allow for a smooth transition.
Summary of key changes
| Feature | Legacy API | New API | Notes |
|---|---|---|---|
| Base URL | https://app.beyondwords.io/api/v4 | https://api.beyondwords.io/v1 | All endpoints use the new base URL |
| Authentication | Authorization header | X-Api-Key header | Same API key, different header name |
| Content creation | /projects/{project_id}/audio | /projects/{project_id}/content | Endpoint name change |
| Content identifier | Numeric id | String UUID id | Format change for BeyondWords content ID |
| Article identifier | external_id | source_id | Field name change (both string format) |
| Content format | Plain text only | Plain text or HTML (preferred) | Enhanced formatting options |